Monkey Script 是一组可以被monkey识别的命令集合,可以完成重复操作。
MoneyRunner提供了一系列的API,可以完成模拟事件及截图操作
获取包名命令: adb logcat | grep START
adb shell monkey -p com.wzh.ydbg -v --throttle 300 --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 -p '%s' 1000 >e:ydbglog.txt
参数解读“
--throttle <毫秒>
指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。
--seed参数(可用于复现问题,)
指定随机生成数的seed值 例如:adb shell monkey -p 包名 -s seed值
--ignore-security-exception
作用:通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
--ignore-timeouts(超时事件)
作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
--ignore-crashes(崩溃事件)
作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
--pct-touch <percent>
作用:调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分
比设置成相应较高的百分比。如触摸返回、触摸签到等
--pct-motion<percent>
调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁
--pct-trackball <percent>
作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁
--pct-nav<percent> 导航,现在手机基本没有导航了
---pct-syskeys<percent> 按键消息比例,主页、后退、音量增减
--pct-anyevent 其他不常用的按键比例的设置,不常用
--hprof monkey测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间
--ignore-security-exceptions 忽略权限问题的
--kill-process-after-error 当错误发生时杀进程
--monitor-native-crashes 监视崩溃时的本地代码
Monkey 模块
提示unknown host service时,查看5037端口被占用,输入命令:netstat -ano |findstr "5037",查看进程PID,在任务管理器关掉相关进程
如果提示devices notfound,可以尝试如下命令:
adb kill-server
adb start-server
adb remount
adb 命令 adb shell monkey -p com.wzh.ydbg -v -v 1000
参数-p用于约束限制,用此参数指定一个或多个包,
参数-v 反馈信息基本,最高是-v -v -v。是最详细的日志。
参数 -s 用于指定伪随机数生成器的seed值,
示例:
Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100
Monkey 测试2:adb shell monkey -p com.htc.Weather–s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。
参数 --throttle<毫秒>
用于指定用户操作的时延,
示例:adb shell monkey -p com.htc.Weather –throttle 3000 100
注意查找日志中的无响应问题和崩溃问题。无响应问题可以在日志中搜索 “ANR” ,崩溃问题搜索 “CRASH” ,内存泄露问题搜索"GC"(需进一步分析),异常问题搜索 “Exception”(如果出现空指针, NullPointerException,需格外重视)。
Monkey Script
执行Monkey脚本命令:
adb shell monkey -f<scriptfile><event-count>
x和y 通过Android SDK里tools里的uiautomatorviewer 的bounds选项查看
上述图片代表一个点击操作。
MonkeyScript实践
脚本实例如下图:
上图前四行是固定格式。不用修改。
选中的俩行需格外注意,设置不好将导致脚本无法正确吊起应用。
使用方法:
1.先把脚本传到手机上
adb push 脚本 /data/local/tmp/
2.进入手机启动
在上述路径下,输入monkey -f 脚本.script 次数。
在电脑端输入命令启动如下:
总结点
应用必须要允许被外部吊起, Android:exported=“true” 该属性必须设置为True;
MonkeyRunner
实现在搜索框中输入查询词,并截图
使用monkeyrunner 调用脚本。