`
zhiweiofli
  • 浏览: 515124 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Monkeyrunner小结

阅读更多

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
即可解决!

 

 

0
0
分享到:
评论

相关推荐

    monkeyrunner

    以下是关于monkeyrunner的一些关键知识点: 1. **基本概念**: - `monkeyrunner`:是一个基于Jython(Python的Java实现)的工具,它允许编写Python脚本来自动化Android设备或模拟器的测试。 - `MonkeyDevice`:是...

    MonkeyRunner脚本生成工具

    MonkeyRunner脚本生成工具是一种Android自动化测试框架,它允许开发者编写Python脚本来控制设备或模拟器,进行应用程序的UI测试。这个工具对于大型项目和持续集成环境尤其有用,因为它可以大大提高测试效率,减少...

    monkeyrunner 简单实用手册

    Monkeyrunner 是 Android SDK 中的一个自动化测试工具,它提供了一个基于 Python 的接口,允许开发者编写脚本来控制设备或模拟器的行为,进行功能测试、性能测试或任何其他自动化任务。这个工具对于开发者来说非常...

    monkeyrunner在pydev的集成

    MonkeyRunner工具和Monkey工具都是Android系统提供的用于进行自动化测试的命令行工具,但它们的应用方式和目的存在一定的差异。 首先我们来理解Monkey工具。Monkey是一个命令行工具,它可以运行在Android的模拟器...

    MonkeyRunner的java实现

    MonkeyRunner是Android SDK提供的一种自动化测试工具,它允许开发者通过编写Java代码来创建自定义的测试脚本,对Android设备或模拟器进行图形用户界面(GUI)级别的自动化测试。MonkeyRunner的名字来源于它随机模拟...

    MonkeyRunner培训简单教程

    ### MonkeyRunner培训简单教程 #### 一、认识MonkeyRunner MonkeyRunner是一种强大的自动化测试工具,主要用于Android设备或模拟器上的应用程序测试。它基于Python语言,能够轻松地与Android框架进行交互,实现...

    monkeyrunner+python脚本

    monkeyrunner+python脚本 monkeyrunner+python脚本 monkeyrunner+python脚本 . monkeyrunner+python脚本 monkeyrunner+python脚本

    MonkeyRunner-官方Doc.zip

    MonkeyRunner 是一个由Android SDK提供的自动化测试工具,它允许开发者编写脚本来控制Android设备或模拟器,进行功能和UI测试。这个工具对于开发者来说非常实用,因为它可以执行一系列预定义的动作,例如点击屏幕、...

    monkeyrunner学习资料

    MonkeyRunner是Android SDK提供的一种基于Python的自动化测试框架,它允许开发者通过编写脚本来控制设备或模拟器,进行各种操作,如触摸屏幕、输入文本、启动应用等,从而实现对Android应用的自动化测试。...

    monkeyrunner录制回放文件.rar

    MonkeyRunner是Android SDK中一个强大的自动化测试工具,它允许开发者编写Python脚本来控制Android设备或模拟器,并进行各种UI操作,如触摸、滑动、点击等。这个名为"monkeyrunner录制回放文件.rar"的压缩包包含两个...

    MonkeyRunner录制脚本相关工具

    MonkeyRunner是Android SDK中提供的一款自动化测试工具,用于创建和执行针对Android设备或模拟器的测试脚本。这个工具基于Python,允许开发者编写脚本来控制设备的行为,如触摸屏幕、输入文本、启动应用等,从而实现...

    android自动化测试monkeyrunner学习

    ### Android自动化测试MonkeyRunner详解 #### 一、MonkeyRunner简介 MonkeyRunner是Android SDK中一个强大的自动化测试工具,它提供了一套API来控制Android设备或模拟器。通过编写Python脚本,用户可以实现诸如...

    monkeyrunner工具包

    Monkeyrunner是Android SDK中一个强大的自动化测试工具,它允许开发者编写脚本来控制Android设备或模拟器,进行自动化测试。这个工具包包含了所有运行Monkeyrunner所需的组件,使得开发者可以在不依赖Android开发...

    monkeyrunner使用要点

    Monkeyrunner 是一个由 Android SDK 提供的工具,用于自动化测试 Android 应用程序。它基于 Python,允许开发者编写脚本来控制设备或模拟器的行为,并与应用程序进行交互。本篇文章将详细讲解 Monkeyrunner 的环境...

    Monkeyrunner入门使用总结

    Monkeyrunner入门使用总结,非常适合初学者学习

Global site tag (gtag.js) - Google Analytics