简介
我们一般使用monkey指定自动遍历主要是通过adb shell monkey
命令开启的,具体monkey其实就是一个模拟器或者真机设备上运行的程序,生成用户事件的伪随机流(点击、滑动、输入以及回退的动作)。
相关命令
前置:需要安装Android SDK,并且配置对应环境变量
可以参考这位师兄的整理,很nice👏👍 monkey用法总结 大家快去点赞吧🤭
使用规则
- 配置基本选项,比如设置操作事件数量
- 操作约束,比如指定只在某个App运行,如果不约束的话,会在设备上随机找App运行,那就打不到咱们预期值。
- 事件类型和频率的设置,比如可以将点击事件,设置到50%的频率;不设置的场景下,事件类型和对应事件发生频率也是随机的
- 调试选项
命令
格式:
adb shell monkey [options] count
adb shell monkey 100
随机操作100次adb shell monkey -p com.tencent.wework 100
只在指定的应用【企业微信】下,随机产生100次事件;这个【企业微信】可以是其他应用包名
也可以传入多个-p参数,指定在多个应用下随机执行这100个事件adb shell monkey -p com.tencent.wework -s 20 100
-s
指定随机事件种子。如果多次执行Monkey时设置值相同,则测试时所产生的事件序列也相同的可以用事件相同执行序列回归bug修复
adb shell monkey -p com.tencent.wework -vv -s 20 100
-vv
参数是指打印出详细的操作日志adb shell monkey -p com.tencent.wework --throttle 5000 100
--throttle
设置时间延迟;用于指定事件间操作间隔时延,单位是毫秒adb shell monkey -p com.tencent.wework 操作事件 10 100
指定某个操作事件在这个100个事件中的占比为10常用事件:
–pct-touch 触摸事件,比如:点击
–pct-motion 动作事件,比如:直线滑动
– pct-trackball 轨迹事件,比如:移动+点击,曲线滑动
–pct-majornav 主要导航事件,比如:系统回退按键、菜单按键
上图日志中,事件对应的数字
// 触摸事件百分比,即参数--pct-touch
public static final int FACTOR_TOUCH = 0;
// 滑动事件百分比,即参数--pct-motion
public static final int FACTOR_MOTION = 1;
// 缩放事件百分比,即参数--pct-pinchzoom
public static final int FACTOR_PINCHZOOM = 2;
// 轨迹球事件百分比,即参数--pct-trackball
public static final int FACTOR_TRACKBALL = 3;
// 屏幕旋转事件百分比,即参数--pct-rotation
public static final int FACTOR_ROTATION = 4;
// 权限开关事件百分比,即参数--pct-permission
public static final int FACTOR_PERMISSION = 5;
// 基本导航事件百分比,即参数--pct-nav
public static final int FACTOR_NAV = 6;
// 主要导航事件百分比,即参数--pct-majornav
public static final int FACTOR_MAJORNAV = 7;
// 系统事件百分比,即参数--pct-syskeys,如Home, Back, Start Call, End Call,音量控制
public static final int FACTOR_SYSOPS = 8;
// Activity启动事件百分比,即参数--pct-appswitch,在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
public static final int FACTOR_APPSWITCH = 9;
// 键盘翻转事件百分比,即参数--pct-flip,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
public static final int FACTOR_FLIP = 10;
// 其他事件百分比,即参数--pct-anyevent,包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等
public static final int FACTOR_ANYTHING = 11;