Monkeyrunner----Android tools中的测试工具 ,主要通过脚本,实现模拟用户对appUI界面的操作,完成对app的黑盒测试。
利弊:
1、可以完成一定复杂程度的测试用例,避免重复的人工工作量;
2、结合heap、strict mode等工具,可以实现压力测试,性能优化等任务;
3、某些API对机型兼容不好,例如4.0以下的机型,对viewnode server支持不友善,导致drag api不能正常工作;
4、由于monkeyrunner的实现基于python脚本,性能比较低下,对脚本的编写有质量要求。
tips:
路径:sdk\tools\monkeyrunner.bat,主要依赖sdk\tools\lib下的:chimpchat.jar, hierarchyviewer2.jar, hierarchyviewer2lib.jar,可以通过分析上述三个jar的源码获得一些高级的API支持:
1. MonkeyRunner和MonkeyDevice是最基础的类.
2. EasyMonkeyDevice提供了一些根据ID进行touch, type, locate, getText的方法
3. By提供了根据ID返回PyObject的方法,使用EasyMonkeyDevice和By的配合可以利用ID做很多事情.
4. HierarchyViewer提供了根据ID找到ViewNode,对viewnode的一些操作等
5. ViewNode类的一个对象就代表了一个控件。控件上的所有属性,包括mID,mText,height,width都可以从这个类得到,从viewnode的java源码中可以得到非常多的信息。
通常实现控件的点击,可以这样子:
easy_device.touch(By.id(id),MonkeyDevice.DOWN_AND_UP)
上面的By.id(id)返回的只是一个PyObject,在easy_device.touch方法中,实现时再回调PyObject中的findView方法,然后再去hierarchyviewer中遍历viewnode,并计算viewnode的坐标,最后就是调用device.touch。咋一眼看,没什么问题,但是从hierarchyviewer遍历viewnode这一节,如果程序的界面十分复杂,hierarchyviewer会十分巨大,从中遍历指定id的viewnode,会超级耗时,由此会引发超时异常,往往会导致点击失败。视图的hierarchyviewer有多大?可以点击eclipse的Load View Hierarchy,即可看到视图控件的层级关系。
根据easy_device.touch(By.id(id),MonkeyDevice.DOWN_AND_UP)的实现原理,我们可以做一下流程的优化:
hierarchy_viewer = device.getHierarchyViewer() print hierarchy_viewer #返回的对象是com.android.chimpchat.hierarchyviewer.HierarchyViewer,见于chimpchat.jar view_node = hierarchy_viewer.findViewById('id/helpinfo_btn') print view_node #返回的对象是com.android.hierarchyviewerlib.models.ViewNode,见于hierarchyviewer2lib.jar point = hierarchy_viewer.getAbsoluteCenterOfView(view_node) #getAbsoluteCenterOfView是HierarchyViewer中的public方法 help_btn_x = point.x help_btn_y = point.y
上面的代码在连接device时执行,下面的点击实现代码,则可以在任何测试逻辑环节中调用,响应时间将大大减少。
device.touch(help_btn_x, help_btn_y, MonkeyDevice.DOWN_AND_UP) #实现view中指定id控件的点击
关于编码
MonkeyRunner中负责解析python的其实是Jython,即是Java版本的python解析器,两种语言之间的调用当然就会存在编码问题:
value = device.getProperty('build.version.sdk') print ">>>%s = %s" % ('sdk version', value)
上面在print 这句代码中,会抛出 unknown encoding 'ms936'
打开命令行工具,输入:chcp 437
Active code page: 437
即可解决!
相关推荐
以下是关于monkeyrunner的一些关键知识点: 1. **基本概念**: - `monkeyrunner`:是一个基于Jython(Python的Java实现)的工具,它允许编写Python脚本来自动化Android设备或模拟器的测试。 - `MonkeyDevice`:是...
MonkeyRunner脚本生成工具是一种Android自动化测试框架,它允许开发者编写Python脚本来控制设备或模拟器,进行应用程序的UI测试。这个工具对于大型项目和持续集成环境尤其有用,因为它可以大大提高测试效率,减少...
Monkeyrunner 是 Android SDK 中的一个自动化测试工具,它提供了一个基于 Python 的接口,允许开发者编写脚本来控制设备或模拟器的行为,进行功能测试、性能测试或任何其他自动化任务。这个工具对于开发者来说非常...
MonkeyRunner工具和Monkey工具都是Android系统提供的用于进行自动化测试的命令行工具,但它们的应用方式和目的存在一定的差异。 首先我们来理解Monkey工具。Monkey是一个命令行工具,它可以运行在Android的模拟器...
MonkeyRunner是Android SDK提供的一种自动化测试工具,它允许开发者通过编写Java代码来创建自定义的测试脚本,对Android设备或模拟器进行图形用户界面(GUI)级别的自动化测试。MonkeyRunner的名字来源于它随机模拟...
### MonkeyRunner培训简单教程 #### 一、认识MonkeyRunner MonkeyRunner是一种强大的自动化测试工具,主要用于Android设备或模拟器上的应用程序测试。它基于Python语言,能够轻松地与Android框架进行交互,实现...
monkeyrunner+python脚本 monkeyrunner+python脚本 monkeyrunner+python脚本 . monkeyrunner+python脚本 monkeyrunner+python脚本
MonkeyRunner 是一个由Android SDK提供的自动化测试工具,它允许开发者编写脚本来控制Android设备或模拟器,进行功能和UI测试。这个工具对于开发者来说非常实用,因为它可以执行一系列预定义的动作,例如点击屏幕、...
MonkeyRunner是Android SDK提供的一种基于Python的自动化测试框架,它允许开发者通过编写脚本来控制设备或模拟器,进行各种操作,如触摸屏幕、输入文本、启动应用等,从而实现对Android应用的自动化测试。...
MonkeyRunner是Android SDK中一个强大的自动化测试工具,它允许开发者编写Python脚本来控制Android设备或模拟器,并进行各种UI操作,如触摸、滑动、点击等。这个名为"monkeyrunner录制回放文件.rar"的压缩包包含两个...
MonkeyRunner是Android SDK中提供的一款自动化测试工具,用于创建和执行针对Android设备或模拟器的测试脚本。这个工具基于Python,允许开发者编写脚本来控制设备的行为,如触摸屏幕、输入文本、启动应用等,从而实现...
### Android自动化测试MonkeyRunner详解 #### 一、MonkeyRunner简介 MonkeyRunner是Android SDK中一个强大的自动化测试工具,它提供了一套API来控制Android设备或模拟器。通过编写Python脚本,用户可以实现诸如...
Monkeyrunner是Android SDK中一个强大的自动化测试工具,它允许开发者编写脚本来控制Android设备或模拟器,进行自动化测试。这个工具包包含了所有运行Monkeyrunner所需的组件,使得开发者可以在不依赖Android开发...
Monkeyrunner 是一个由 Android SDK 提供的工具,用于自动化测试 Android 应用程序。它基于 Python,允许开发者编写脚本来控制设备或模拟器的行为,并与应用程序进行交互。本篇文章将详细讲解 Monkeyrunner 的环境...
Monkeyrunner入门使用总结,非常适合初学者学习