MonkeyRunner easy package的使用

本文介绍如何使用monkeyrunner的easy包进行Android自动化测试,通过HierarchyViewer工具快速获取控件ID,并利用By和EasyMonkeyDevice类实现基于ID的控件定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/rtczl/article/details/8224857 

Android手机不像iPhone,六年了只出了六款手机,分辨率只有三种。Android系统的开源注定了Android手机的差异化,众多分辨率给自动化测试带来了很大的麻烦,通过坐标定位写出来的脚本通用性很低,那么有没有其他的定位方法呢?有!monkeyrunner自带一个package叫easy,这个package中包含两个类:By和EasyMonkeyDevice,通过这两个类可以使用id进行控件的定位,比坐标通用性强,且更加方便。

        在介绍By和EasyMonkeyDevice之前,先介绍一个实用工具——Hierarchy Viewer。在monkeyrunner.bat同一个目录下有个hierarchyviewer.bat,双击或者在cmd窗口输入hierarchyviewer都能启动。通过该工具可以很方便地查看界面上的控件,可以看到控件的很多信息,包括id、Height、Width等等,比从代码找id方便得多。不过很悲催的就是量产机无法使用该工具,主要是Google出于安全考虑,只对开发者ROM开放此功能。工具使用很简单,就不多说了(本来想贴两张图的,显示不了,算了,哎)。

        看了By和EasyMonkeyDevice的源代码,发现都有个“import com.android.chimpchat.hierarchyviewer.HierarchyViewer;”,所以量产机是没办法使用这两个类的,我也不得不将Motorola XT889换成公司的工程机HTC T528d了。这里依然以天翼空间为例,接着上一篇博文介绍。

        1、导入模块:输入from com.android.monkeyrunner.easy import EasyMonkeyDevice,By,导入同一个包中的多个类,类之间用逗号隔开;

        2、获取EasyMonkeyDevice对象:输入eT528d=EasyMonkeyDevice(T528d),T528d为MonkeyDevice对象;

        3、获取By对象:输入DisagreeButton=By.id("id/btn_disagree"),获取天翼空间登录界面的“不同意”按钮,按钮id为“id/btn_disagree”;

        4、通过id点击控件:输入eT528d.touch(DisagreeButton,T528d.DOWN_AND_UP),点击“不同意”按钮,即退出天翼空间。

        以上3、4步一般合并使用,即写成:eT528d.touch(By.id("id/btn_disagree"),T528d.DOWN_AND_UP)。完整代码如下:

[python]  view plain copy
  1. from com.android.monkeyrunner import MonkeyRunner as MR  
  2. from com.android.monkeyrunner import MonkeyDevice as MD  
  3. from com.android.monkeyrunner import MonkeyImage as MI  
  4. from com.android.monkeyrunner.easy import EasyMonkeyDevice,By  
  5.   
  6. T528d=MR.waitForConnection(10)  
  7. if T528d:  
  8.  print("Connect device successful!")  
  9. else:  
  10.  print("Connect device failed!")  
  11. eT528d=EasyMonkeyDevice(T528d)  
  12. T528d.installPackage("D:\\MonkeyRunnerDemo\\Apps\\estore.apk")  
  13. T528d.startActivity(component="com.eshore.ezone/.StartActivity")  
  14. MR.sleep(3)  
  15. eT528d.touch(By.id("id/btn_disagree"),T528d.DOWN_AND_UP)  

        EasyMonkeyDevice类里面还有很多方法,包括exists(By)、getText(By)、type(By,String)、visible(By)等等,用法自己去发掘,后续博文会写一些比较长的脚本,会用到很多我这里没讲到的方法和属性供大家参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值