一:简介
1.monkeyrunner:android SDK自带的工具,提供多个API,可使monkeyrunner API写python测试脚本来模拟操控andriod设备或模拟器中的app,测试其稳定性并可通过截屏记录出现的问题。
2.工具特性:
(1)多设备控制:API可跨多设备,一次启动全部模拟器来实施测试套件
(2)功能测试:为应用自动执行功能测试,然后观察输出结果截屏
(3)可扩展自动化:monkeyrunner是一个api工具包,可开发基于python模块整个系统来控制android设备
(4)回归测试:monkeyrunner可运行某个应用并将其结果截图与已知正确的结果截图相比较,以此测试应用稳定性。
二:环境配置
配置环境:JDK+SDK+python(详询可查看上一节monkey环境配置),最后将monkeyrunner环境变量进行配置,配完在终端里输monkeyrunner检测是否配成功。
三:monkeyrunner API三个类的应用
1.MonkeRunner类:提供连接真机和模拟器,输入,暂停,警告等方法
(1)waitForConnection(float timeout,string deviceid):等待设备连接,有多个device id,需要指明具体哪个设备。
eg:device=MonkeyRunner.waitForConnection()
(2) alert(弹出对话框)
eg:void alert(string message,string title,string ok Title)
(3) input():输入 . sleep():暂停 . choice():选项列表 . help():API帮助文档
2.MonkeyDevice类:提供安装和卸载程序包,开启activity,发送按键和点击事件,运行测试包等方法
(1)startActivity(package+'/'+activity):启动应用,通常传递包名,activity名即可
eg:startActivity(component='com.android.settings/.MainActivity')
(2)installPackage(string path) :安装程序包,path为程序包路径
removePackage(string package:卸载程序包
(3)touch(integer x,integer y,integer type):点击操作
integer x,y:坐标值
integer type:keyevent类型(Down,Up,DOWV_AND_UP)
Down为按下事件,UP为弹起事件,DOWV_AND_UP为按下弹起事件
eg: device.touch(918,540,'DOWN_AND_UP')
(4)press(string name,dictionary type):按键
keycode类型:
BACK键:KEYCODE_BACK
Home键:KEYCODE_HOME
上导航:KEYCODE_DPAD_UP
下导航: KEYCODE_DPAD_DOWN
OK键:KEYCODE_DPAD_CENTER
type类型同上
eg:device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)
(5) drag(tuple start,tuple end,float duration,integer steps):拖动
start:起点位置 end:终点位置 duration:手势持续时间 steps:插值点的步数,默认为10
eg:device.drag((100,1053),(520,1053),0.1,10)
(6)type(string message):输入
(6) instrument():执行测试用例 shell():执行命令 reboot():重启
broadcastIntent():发送广播 getProperty:获取当前设备属性
getSystemProperty():获取系统配置信息
3.MonkeyImage类
(1)takeSnapshot():截屏
(2)boolean sameAs(MonkeyImage other,float percent):图像对比
(3)writetoFile(string path,string format):保存图像文件
eg:result=device.takeSnapshot()
result.writeToFile('/Users/Apple/Desktop/1.png','png')
四:简单实践(可在终端里调试也可以写python测试脚本进行调试)
终端里:
#看是否连接上设备
adb devices
#查看带Android的package包名
adb shell pm list packages |grep Android
#查看当前测试包有哪些activity
adb shell dumpsys package com.Android.settings |grep Activity
#进入monkeyrunner
monkeyRunner
#导入模块
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
#连接当前设备,并返回一个MonkeyDevice对象
device=MonkeyRunner.waitForConnection()
#安装Android包
device.installPackage('/Users/Apple/Desktop/.apk')
#卸载程序
device.remove()
#使用adb shell pm list packages |grep Android抓所需测试的package,再使用 adb shell dumpsys package com.Android.settings |grep Activity抓所需测试的活动
或使用aapt(apktool安装)获取activity下package和入口activity名称,使用cmd窗口下面,跳转到apktool下,输入aapt dump badging /Users/Apple/Desktop/.apk
#启动一个Activity
device.startActivity(component='com.android.settings/.MainActivity')
#截图
result=device.takeSnapshot()
result.writeToFile('/Users/Apple/Desktop/1.png','png')
#从PC加载图片
pic=MonkeyRunner.loadImageFromFile( './shot.png')
用Python写测试脚本同理,再在终端里运行
monkeyrunner /./. py即可