MonKey App 压力测试 (中级篇)《Monkey Script的使用》

什么是monkey script

Monkey script是按照一定的语法规则编写有序的用户事件流并适用于monkey命令工具的脚本。

前面monkey 测试基本是简单的,在使用中很多地方都用不上,比如我要指定输入text文本进行登陆时。

在 monkey 的源码 MonkeySourceScript.java 中找到了一小段注释,里面给了一个不到 10 行例子:

/** 

 * monkey event queue. It takes a script to produce events 

 

 * sample script format: 

 *      type= raw events 

 *      count= 10 

 *      speed= 1.0 

 *      start data >> 

 *      captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314, 

 *          0.06666667,0,0.0,0.0,65539,0) 

 *      captureDispatchKey(5113146,5113146,0,20,0,0,0,0) 

 *      captureDispatchFlip(true) 

 *      ... 

 */

上面我们可以看到有个固定格式:

type指明类型

count说明执行次数,但是这里改成任何值都执行一次,monkey命令可以指定执行次数,这里也就无所谓了

speed命令执行速率。改动无影响,可以通过monkey命令行指定。

以上三个参数改动都没什么影响,一般不做改动。

start data >>相当于一个入口,说明脚本从下面开始执行

用法:

adb shell monkey -f <script file> <运行脚本的次数>

例如,我们放一个脚本到 /sdcard/monkey.script,然后运行:

adb shell monkey -f /sdcard/monkey.script 10,那么这个脚本里面指定的动作就会被执行10次。

整理的脚本函数列表:(简单介绍下Monkey的API)

//点击事件

DispatchPointer(long downTime,  long eventTime, int action,  

  float x, float y, float pressure, float size, int metaState,  

float xPrecision, float yPrecision, int device, int edgeFlags)  

// 轨迹球事件 (用来做点击事件,action

DispatchTrackball(long downTime,  long eventTime, int action,   

 float x, float y, float pressure, float size, int metaState,  

 float xPrecision, float yPrecision, int device, int edgeFlags)  

//输入字符串事件:

DispatchString(String text)

//发送键值:

DispatchKey(long downTime, long eventTime, int action, int code,    

    int repeat, int metaState, int device, int scancode)  

//  打开软键盘

DispatchFlip(boolean keyboardOpen)  

//  按下键值: 66表示回车,(意思将软键盘的字输入到指定的文本框中)

DispatchPress(int keyCode)  

 // 启动应用:

LaunchActivity(String pkg_name, String cl_name)  

  //等待事件:

UserWait(long sleeptime)  

//  长按键值

LongPress(int keyCode)  

例子:

type = user

count =10

speed =1.0

start data >>LaunchActivity(com.ringo.bugben,com.ringo.bugben.MainActivity)

# 点击文本框1

captureDispatchPointer(10,10,0,210,200,1,1,-1,1,1,0,0)

captureDispatchPointer(10,10,1,210,200,1,1,-1,1,1,0,0)

# 确定文本框1内容

captureDispatchString(Hello)

# 点击文本框2

captureDispatchPointer(10,10,0,210,280,1,1,-1,1,1,0,0)

captureDispatchPointer(10,10,1,210,280,1,1,-1,1,1,0,0)

# 确定文本框2内容

captureDispatchString(Ringo)

# 点击加粗

captureDispatchPointer(10,10,0,210,420,1,1,-1,1,1,0,0)

captureDispatchPointer(10,10,1,210,420,1,1,-1,1,1,0,0)

# 点击大号

captureDispatchPointer(10,10,0,338,476,1,1,-1,1,1,0,0)

captureDispatchPointer(10,10,1,338,476,1,1,-1,1,1,0,0)

# 等待500毫秒

UserWait(500)

# 点击提交

captureDispatchPointer(10,10,0,100,540,1,1,-1,1,1,0,0)

captureDispatchPointer(10,10,1,100,540,1,1,-1,1,1,0,0)

上面点击按钮坐标点可以借助,android sdk 里面UI界面分析工具“uiautomatorviewer” ,在下载的sdk 下面“sdk\tools”中

使用方式请百度一下。我不多做解释

想要更多的编程学习资料,请关注微信公众号:IT010101

发布了24 篇原创文章 · 获赞 16 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/ccc920123/article/details/53376560
今日推荐