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

来源:互联网 发布:java工程师工作规划 编辑:程序博客网 时间:2024/05/16 13:55
什么是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”中
使用方式请百度一下。我不多做解释


领取福利请到黑客帝国时代 公众号:The_HK




1 0
原创粉丝点击