MS 是官方提供的,除了像猴子同样随机乱点以外,还能够经过编写脚本的形式,完成一系列固定的操做。MS 提供一整套完善的 API 来进行支持,主要仍是基于坐标点的操做,包含经常使用的:点击、长按、输入、等待等操做。shell
2、 MonkeyScript的使用app
MS脚本只要是文本便可,不关心后缀是什么,因此编写时不要添加后缀,保存文本格式便可。测试
MS 脚本虽然有一些指定的 API ,可是也有一些固定的脚本头,须要写在脚本的最前面。spa
type=user.net
count = 1日志
speed = 1.0code
start data >>blog
在脚本中,脚本头是一直不变更的,为了不写错,能够直接复制粘贴最保险。在 start data>> 以后就能够正式开始编写 monkey 脚本了,在脚本中,使用 #
号,对单行进行注释。事件
MonkeyScript是须要指定Activity(当前app展现的界面)的,获取当前指定界面Activity名称的指令为adb shell dumpsys activity | grep mFocused。ip
下面以测试登陆功能为例:
LaunchActivity(Activity)
UserWait(1000)
DispatchPointer(0,0,0,303,312,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,303,312,0,0,0,0,0,0,0)
UserWait(1000)
DispatchString(1234566)
UserWait(100)
//输入密码
DispatchPointer(0,0,0,345,393,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,345,393,0,0,0,0,0,0,0)
UserWait(100)
DispatchString(1234567)
UserWait(1000)
//点击空白处让键盘消失
DispatchPointer(0,0,0,100,100,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,100,100,0,0,0,0,0,0,0)
UserWait(1000)
//点击登陆按钮
DispatchPointer(0,0,0,361,507,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,361,507,0,0,0,0,0,0,0)
UserWait(3000)
脚本解释:
首先启动你要测试的界面,此处为登陆界面,登陆界面有三个控件,用户名的textField,密码的textField,和登陆按钮。
LaunchActivity()
做用为来到登陆界面
UserWait(1000)
等待1秒之后执行下一个操做
DispatchPointer(0,0,0,303,312,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,303,312,0,0,0,0,0,0,0)
DispatchPointer点击用户名的textField,只需关注3,4,5这三个参数便可,第三个参数为0表示点击了textField ,为1表示松开了textField,4,5两个参数分别为用户名textField 的x,y坐标。
DispatchString(123456)
在用户名的textField中输入123456用户名
按照上面的操做在密码的textField输入密码,点击登陆按钮,整改登陆测试就完成了,若是须要继续测试登陆后的界面则须要重新启动新的Activity。
//登陆成功后来到首页点击发布做业功能(具体什么功能和第4,5个参数设置的值有关)
LaunchActivity(Activity)
UserWait(1000)
DispatchPointer(0,0,0,650,182,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,650,182,0,0,0,0,0,0,0)
UserWait(1000)
Drag(500,1500,500,500,12)
#向上滑动
将写好的脚本保存到本地。
2. Monkey 启动 MonkeyScript 的命令以下:
adb shell monkey -f <MonkeyScript> <EventCount>
<MonkeyScript>指你编写的MonkeyScript脚本,
<EventCount>指Monkey事件,例如执行次数,日志详情等。
具体指令:
其余简介
LaunchActivity(pkg_name, cl_name):启动应用的Activity。参数:包名和启动的Activity。
Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。
DispatchPress(keyName): 按键。参数: keycode。 详细的Android Keycode列表: http://blog.csdn.net/feizhixuan46789/article/details/16801429
RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1表明90度;persist表示旋转以后是否固定,0表示旋转后恢复,非0则表示固定不变。
DispatchFlip(true/false): 打开或者关闭软键盘。
LongPress(): 长按2秒。
PressAndHold(x, y, pressDuration): 模拟长按事件。
DispatchString(input): 输入字符串。
Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操做。
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。
UserWait(sleepTime): 休眠一段时间
DeviceWakeUp(): 唤醒屏幕。
PowerLog(power_log_type, test_case_status): 模拟电池电量信息。
WriteLog(): 将电池信息写入sd卡。
RunCmd(cmd): 运行shell命令。
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,发送单个手势。
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 发送按键消息。
LaunchInstrumentation(test_name,runner_name): 运行一个instrumentation测试用例。
DispatchTrackball: 模拟发送轨迹球事件。
ProfileWait: 等待5秒。
StartCaptureFramerate(): 获取帧率。
EndCaptureFramerate(input): 结束获取帧率。