MonkeyRunner入门(三)

引用monkeyrunner的第三方库wrapEasyMonkey,是基于EasyMonkeyDevice来二次封装的,并加入了自动异常处理、失败重试、case管理、断言、获取控件上的文本等,大大增强了monkeyrunner本来的功能。比如我们在测试一个apk时,要么通过控件的文本、坐标来进行控制,要么是通过控件id,但大家都知道,测试不同设备不同分辨率时测试同一个apk通过指定的坐标来控制是不现实的;同一apk中所有控件的文本也有相同的情况,因此通过控件的文本来控制也不现实;那通过控件id呢,同一apk下id也有重复的现象,那这应该如何处理呢?可以通过Hierarchy Viewer得到的控件树形图,其实我们完全可以基于每个控件所在的子节点的位置,结合python函数的不定参数的特性,去获取任意已知ID的父节点的任意子节点的引用,然后再用这个引用作为参数去获取其对应的文本、断言等等,要达到这样的功能需要修改原来那个包里的部分函数。
实例讲解:对系统“设置”下的“声音”进行相应操作
设置界面
在wrapEasyMonkey.py添加核心代码如下:
核心代码
调用该方法:viewvoice = wrapdevice.getChildView(‘id/headers’,0,5,1,0),其中“id/headers”这个是其父对象的ID,这个ID必须符合两个条件,即有效和唯一。通过这个ID,我们就可以得到它的任意子孙节点的引用,0,5,1,0则是联系人控件在对象树中的索引链上的位置,对照图应该很容易理解。
Hierarchy Viewer
测试脚本如下:
monkeyrunner脚本1
monkeyrunner脚本2
monkeyrunner脚本3

遇到的问题:wrapEasyMonkey.py脚本报错,提示:‘ImportError: cannot import name ViewNode’
解决办法:将wrapEasyMonkey.py脚本中的from com.android.hierarchyviewerlib.device import ViewNode修改为from com.android.hierarchyviewerlib.models import ViewNode

2 条评论

  1. #1 饭桶哟 @ 2015-02-02 09:03

    欢迎常来 :lol:

    回复

  2. #2 卢文 @ 2016-03-19 10:12

    好给力哦! :oops:

    回复

卢文进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

表情
  • 默认
  • 梦幻西游
  • 私人订制