如何编写monkey脚本

1、介绍

MonkeyScript是monkey的脚本语言,是一组可以被Monkey识别的命令集合,可以帮我们完成一系列的被固定的重复性操作。

脚本优势:简单、快捷、不需要借助任何工具,只是运行一个脚本文件

脚本缺点:只能简单实现坐标、按键等基本操作(根据像素点来进行操作)

2、脚本格式

#头文件、控制monkey发送消息的参数

type=raw events

count=10

speed=1.0

#以下为monkey命令

start data >>

LaunchActivity(pkg_name,activity)

DispatchPress(KEYCODE_ENTER)

DispatchPress(KEYCODE_HOME)

---->前三行是脚本头。count为脚本中包含的指令数目。speed为执行速度。

---->start data >>后面是执行的命令。

3、常用方法

LaunchActivity(pkg_name, cl_name): 启动应用的Activity。参数:包名和启动的Activity。

(1)点击操作

Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。

DispatchPress(keyCode): 按键。注:keyCode值可以百度android keycode列表获取

LongPress():  长按2秒。

PressAndHold(x, y, pressDuration):  模拟长按事件。

DispatchPointer(downTime,eventTime,action,x,y,pressure,size,metaState,xPrecision,yPrecision,device,edgeFlags):DispatchPointer命令用于向一个指定的坐标位置,发送点击操作。

主要关注action、x、y三个参数。action:事件是按下还是抬起,0表示按下,1表示抬起。x、y:表示当前事件触发的X轴和Y轴的坐标。两个DispatchPointer命令加在一块,一个按下一个抬起,表示一次点击操作,其余参数默认设置为0即可。downTime,eventTime表示持续时间,用毫秒表示。

(2)拖拽操作

Drag(xStart, yStart, xEnd, yEnd, stepCount):  用于模拟一个拖拽操作。

PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。

(3)等待操作

UserWait(sleepTime): 等待一段时间,sleepTime表示的等待时间,单位为毫秒。

DeviceWakeUp(): 唤醒屏幕。

ProfileWait: 等待5秒。

(4)其他操作

DispatchString(input):  输入字符串。

RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。

DispatchFlip(true/false): 打开或者关闭软键盘。

4.实例

  1. <脚本举例>

    要求:打开浏览器,输入www.ningmengban.com, 退出浏览器。这个步骤进行重复压力测试。

  2.  

    ---->脚本文件browser.txt编写内容如下:

    #头文件、控制monkey发送消息的参数

    type=raw events

    count=10

    speed=1.0

    #以下为脚本正文

    start data >>

    #1.打开浏览器

    LaunchActivity(com.android.browser,com.android.browser.BrowserActivity)

    ProfileWait()

    #2.清空网址

    Tap(223,146)

    ProfileWait()

    DispatchPress(112)

    ProfileWait()

    #3.输入网址

    DispatchString(www.ningmengban.com)

    ProfileWait()

    #4.确认,载入网址

    DispatchPress(KEYCODE_ENTER)

    ProfileWait()

    #5.完成退出浏览器

    DispatchPress(KEYCODE_HOME)

    ProfileWait()

---->将browser.txt文件push到手机中

adb push D:rowser.txt data/local/tmp

D:rowser.txt 为本地脚本文件路径及名称,data/local/tmp为手机路径

---->运行脚本

adb shell monkey -f data/local/tmp/browser.txt -v -v 200

原文地址:https://www.cnblogs.com/crystal1126/p/12733983.html