上篇文章主要讲monkey工具的简单使用https://editor.csdn.net/md/?articleId=104640494
本篇为monkey工具使用的进阶用法monkeyscript
上一篇中我我们知道monkey可以像猴子一样乱点,用来测试APP稳定性。除了乱点以外,还可以通过编写脚本形式来完成一些指定的操作。
MonkeyScript虽然有一些指定的API,但也有一些固定的脚本头要写在脚本最前面
type= raw events
count= 4
speed= 1.0
start data >>
常用指令简介:
(1)LaunchActivity(pkg_name, cl_name):启动指定应用的Activity。参数:包名和启动的Activity
如果我们不知道当前应用的包名和Activity,可以打开应用,用
adb shell dumpsys window w | findstr / | findstr name=
查看当前应用报名和Activity,如:
或者adb shell dumpsys window |findstr mCurrent
或者adb shell pm list packages 查看当前路径下的所有包名
例:用指令启动设置
LaunchActivity(com.xtc.setting, com.xtc.setting.module.home.view.HomeStaticActivity) #启动设置
UserWait(2000) #等待2秒
(2)Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作
参数如下:
xStart, yStart//拖拽的起点位置坐标
xEnd, yEnd//拖拽的终点位置坐标
stepCount//拖拽的事件或步长
其中坐标可以使用android sdk 里面UI界面分析工具uiautomator viewer ,在sdk 下面sdk\tools路径下
例:向右滑动
Drag(30, 120, 200, 120, 250) #向右滑动
UserWait(2000) #等待2秒
(3)DispatchPointer ( downTime , eventTime , action , x , y , pressure , size , metaState , xPrecision , yPrecision , device , edgeFlags):用于模拟用户点击操作,用于向一个执行的坐标位置发送单个手势消息
有12个参数,点击事件中最常用的参数只有三个action,x,y,其中action中数字0代表按下,1代表抬起最为常用。参数中的其他参数都是设置为默认的为0,具体详解如下:
long downTime //键最初被按下的时间
long eventTime //事件发生的时间
int action //(ACTION_DOWN=0,ACTION_UP=1)
float x,y /x,y坐标
float pressure //当前事件的压力,范围0-1
float size //触摸的近似值,范围0-1
int metaState //当前按下的meta键的标识
float xPrecision //x坐标精确值
float yPrecision //y坐标精确值
int device //事件来源,范围0-x,0表示不来自物理设备
int sedgeFlags //
例:
captureDispatchPointer(0,0,0,140,70,0,0,0,0,0,0,0)
captureDispatchPointer(1,1,1,140,70,0,0,0,0,0,0,0)
UserWait(2000) #等待2秒
captureDispatchPointer(0,0,0,50,80,0,0,0,0,0,0,0)
captureDispatchPointer(1,1,1,50,80,0,0,0,0,0,0,0)
UserWait(8000) #等待8秒
(4)PinchZoom( pt1xStart, pt1yStart, pt1xEnd, pt1yEnd, pt2xStart, pt2yStart, pt2xEnd, pt2yEnd, stepCount):用于缩放模拟(两指头操作)
参数如下:
pt1xStart, pt1yStart//开始的坐标位置1
pt1xEnd, pt1yEnd//结束的坐标位置1
pt2xStart, pt2yStart//开始的坐标位置2
pt2xEnd, pt2yEnd//结束的坐标位置2
stepCount//事件,stepCount设置事件多少次完成缩放
(5)Tap(x,y,tapDuration):用于模拟手指一次单击事件
参数如下:
x,y//为坐标参数
tapDuration//时间,tapDuration时间长了可以模拟长按
(6)LongPress():LongPress 命令用于模拟长按时间,标准为长按 2s 。它是一个无参的方法,直接调用即可
(7)captureDispatchString(input):用于向 Shell 输入一个字符串
(8)UserWait(sleepTime): 休眠一段时间,单位:毫秒
(1)将脚本保存命名(例test_search)
(2)将脚本文件放置测试机中,adb push 文件 到/sdcard路径下
(3)运行脚本文件100次
adb shell monkey -v -f /sdcard/文件.script 100