一般情况Monkey测试执行的是随机的事件流,如果只是想让Monkey具体的测试某个特定场景时就需要用到自定义脚本了,因为Monkey支持自定义脚本测试,这时就需要按照Monkey脚本的规则进行脚本编写,再存储到手机上,启动Monkey后通过 -f 参数来调用自定义的脚本即可。
目录
1、开启模拟器坐标导航栏
2、常用 Monkey 脚本 API 介绍
3、了解 Monkey 脚本的格式
4、查看豌豆荚的appActivity
5、编写测试豌豆荚的测试脚本:
6、将编写好的测试脚本放入手机模拟器中
7、执行测试脚本
8、执行脚本后的日志管理
1、开启模拟器坐标导航栏
先打开 夜神模拟器,选择 设置—>开发者选项—>选中 “指针位置” 复选框,接下来在 Nox 的桌面就会显示一个坐标导航栏,有助于快速找到我们选中的内容的坐标

2、常用 Monkey 脚本 API 介绍
# 启动应用的Activity,参数:(包名 和 启动的Activity)
LaunchActivity(pkg_name, cl_name)
# 模拟一次手指单击事件。参数:(x,y为控件坐标,tapDuration为点击的持续时间,不过这个参数可以不用写)
Tap(x, y, tapDuration)
# 休眠一段时间
UserWait(sleepTime)
# 输入字符串
DispatchString(input)
# 打开或者关闭软键盘
DispatchFlip(true/false)
# 模拟用户的长按事件
PressAndHold(x, y, pressDuration)
# 用于模拟用户的一个拖拽操作
Drag(xStart, yStart, xEnd, yEnd, stepCount)
# 模拟用户的缩放手势
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount)
# 长按2秒
LongPress()
# 唤醒屏幕
DeviceWakeUp()
# 等待5秒
ProfileWait
# 获取帧率
StartCaptureFramerate()
# 结束获取帧率
EndCaptureFramerate(input)
# 用来模拟电池电量信息
PowerLog(power_log_type, test_case_status)
# 将电池信息写入sd卡
WriteLog()
# 运行shell命令
RunCmd(cmd)
# 执行一个instrumentation测试用例
LaunchInstrumentation(test_name,runner_name)
# 向指定的位置,发送单个手势
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags)
# 发送按键消息
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags)
3、了解 Monkey 脚本的格式
Monkey 的脚本内容主要包含两部分:一个是头文件信息,另一个是具体的Monkey命令
type = raw events # = 两边一定要留空格,如果不留空格的话会报错
count = 1 # 指脚本执行的次数
speed = 1.0 # 指脚本执行的速率
# 下面为monkey命令
start data >>
# 具体的monkey脚本内容
4、查看豌豆荚的appActivity
首先要配置下 aapt,具体配置可参考:aapt配置
# 在 Terminal 中输入:
aapt dump badging /APP包文件路径/wandoujia.apk
找到 'launchable-activity' 对应的启动信息:

5、编写测试豌豆荚的测试脚本:
# wdj.txt
# 头文件信息
type = raw events
count = 1
speed = 1.0
# 启动测试
start data >>
LaunchActivity(com.wandoujia.phoenix2,com.pp.assistant.activity.PPMainActivity)
UserWait(1000)
Tap(24.8,55.9,500) # 点击左上角图标进入管理页面
UserWait(1000)
Tap(91.8, 449.3,500) # 点击垃圾清理进入深度清理页面
UserWait(1000)
Tap(231.5,771,300) # 点击一键清理
6、将编写好的测试脚本放入手机模拟器中
# 在 Terminal 中输入以下命令,将编写好的脚本放入到模拟其中
adb push ./wdj.txt /sdcard
# 如果在执行上面的命令后,出现如下错误
# adb server version (32) doesn't match this client (41); killing...
# * daemon started successfully
adb: error: failed to get feature set: no devices/emulators found
# 解决方法:重新连接以下设备即可
adb connect 127.0.0.1:62001
7、执行测试脚本
# 在 Terminal 输入:
adb shell monkey -f /sdcard/wdj.txt -v 1

8、执行脚本后的日志管理
对于Monkey的日志管理是使用Monkey测试中的一个关键环节,因为通过对日志管理的分析,可以获取到当前测试对象在测试过程中有没有发生异常,以及发生的概率,也可以同时获取对应的错误信息,能够帮助开发快速定位和解决问题
Monkey的日志保存方法有:
# 1、将日志保存在自己的电脑上
adb shell monkey -f /sdcard/wdj.txt -v 1 >/存放路径/wdjj.txt
# 2、将日志保存在设备上面
第一步:adb shell
第二步:root@android:/ # monkey -f /sdcard/wdj.txt -v 1 >/sdcard/wddj.txt
# 3、将日志中的标准流与错误流进行分开保存(1>保存的是标准流的日志信息,2>保存的是错误流的日志信息)
adb shell monkey -f /sdcard/wdj.txt -v 1 1>/存放路径/right.txt 2>/存放路径/error.txt
|