MonkeyRunner API
MonkeyRunner工具主要有三个类:
- MonkeyRunner
- MonkeyDevice
- MonkeyImage
官方API文档 :http://www.android-doc.com/tools/help/monkeyrunner_concepts.html#
1.MonkeyRunner类:
MonkeyRunner提供连接真机和模拟器、输入、暂停、警告框等方法。
常用方法
from com.android.monkeyrunner import MonkeyRunner as mr
print("connect devices...")
device=mr.waitForConnection() #等待连接设备
# device=mr.waitForConnection(5,'127.0.0.1:62001')
2.MonkeyDevice类
MonkeyDevice类提供了安装和卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法。
常用方法
-
installPackage (string path) #安装应用 removePackage (string package) #删除应用 startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component,flags) #启动应用 touch (integer x, integer y, integer type) #点击
touch参数说明
touch (integer x, integer y, integer type) #点击
integer x:x坐标值。
integer y:y坐标值。
integer type:key event类型(如DOWN、UP、DOWN_AND_UP)。
DOWN为按下事件 UP为弹起事件 DOWN_AND_UP为按下弹起事件。
drag参数详细说明如下:
drag (tuple start, tuple end, float duration, integer steps)
tuple start:拖拽起始位置,为tuple类型的(x,y)坐标点。
tuple end:拖拽终点位置,为tuple类型的(x,y)坐标点。
float duration:拖拽手势持续时间,默认为1.0s。
integer steps:插值点的步数,默认值为10。
实践案例:
连接设备,安装考研帮App并启动
代码实现
py文件名:kyb_start.py
from com.android.monkeyrunner import MonkeyRunner as mr #导入类
from com.android.monkeyrunner import MonkeyDevice as md #导入类
print("connect devices...") #打印连接设备
device=mr.waitForConnection() #连接设备
print("install app...") #打印安装app
device.installPackage(r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk') #安装app
package = 'com.tal.kaoyan' #app 包名
activity = 'com.tal.kaoyan.ui.activity.SplashActivity' #app launch-activity名
runComponent = package + '/' + activity #进行拼接
print("launch App...") #打印启动app
device.startActivity(component=runComponent) #启动app
代码执行方式
monkeyrunner scripfile
eg:
monkeyrunner E:\monkeyrunner_script\kyb.py
3.MonkeyImage类
MonkeyImage类在测试过程中用来保存各种格式的测试截图,并可以进行图像对比。
常用方法
- takeSnapshot() 进行屏幕截图
- writeToFile() 保存图像文件到指定的文件路径
用法示例
from com.android.monkeyrunner import MonkeyImage as mi
print("takeSnapshot")
screenshot=device.takeSnapshot()
screenshot.writeToFile(r'E:\monkeyrunner_script\test.png','png')
综合实践
测试场景
- 连接设备,自动安装并启动考研帮app
- 启动后登录账号(账号zxw1234 密码:zxw123456),然后截图并保存到指定文件位置。
思路分析
- 连接设备
- 安装app
- 启动app
- 输入用户名密码点击登录按钮
- 截图
脚本实现
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi
print("connect devices...")
device=mr.waitForConnection() #连接设备
print(" install app")
device.installPackage(r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk') #安装app包
print("launch app...")
package='com.tal.kaoyan' #包名
activity='com.tal.kaoyan.ui.activity.SplashActivity' #activity名
runComponent=package+'/'+activity
device.startActivity(component=runComponent) #启动app包
mr.sleep(3)
print("touch cancel button")
device.touch(618,895,'DOWN_AND_UP') #点击升级
mr.sleep(1)
print("touch skip button")
device.touch(804,67,'DOWN_AND_UP') #点击跳过
mr.sleep(1)
print("input username and password")
device.touch(57,373,'DOWN_AND_UP') #点击name输入框
mr.sleep(2)
device.type('name') #输入name
device.touch(152,480,'DOWN_AND_UP') #点击密码输入框
mr.sleep(2)
device.type('password') #输入密码
mr.sleep(2)
print("touch login button")
device.touch(331,634,'DOWN_AND_UP') #点击登陆
print("takeSnapshot")
screenshot=device.takeSnapshot() #开始截图
screenshot.writeToFile(r'D:\monkeyrunner\kyb.png','png') #保存截图
注意事项
方法调用错误
AttributeError: type object 'com.android.monkeyrunner.XXXXX' has no attribute XXXXXX
检查调用的方法名是否写错,特别是注意区分大小写。
字符编码错误
SyntaxError: Non-ASCII character in file 'E:\monkeyrunner_script\kyb.py', but no encoding declared;
需要在代码顶部补充 # -- coding: utf-8 -- 或者去掉代码中的中文字符