Monkey详解(脚本篇---Monkey API)

来源:互联网 发布:python url解码 编辑:程序博客网 时间:2024/05/17 23:19

本篇我们将讲述常用的五个Monkey API。目的在于完成一个简单的测试脚本。

(一)五个常用API

(1)如何开启Activity
开启一个Activity需要两个参数:Package和Activity

LaunchActivity(com.breakloop.butterknifedemo,com.breakloop.butterknifedemo.MainActivity);

(2)如何选择控件
控件的选择包括两个Event,EVENT_DOWN和EVENT_UP。
因此需要调用两次API,来选中控件。

先看一下API

DispatchPointer(downTime, eventTime,action, x, y, pressure, size, metaState, xPrecision, yPrecision,device, edgeFlags)

API有13个参数,但我们只关注第三,四,五个。
注:对于其他参数的含义,感兴趣的同学可以google一下。

action即为Event,EVENT_DOWN为0,EVENT_UP为1。
而x,y则是我们在上一博文中所讲的坐标。

(3)如何输入数据

DispatchString(str)

注:API中直接输入String数值即可,无需带双引号“”

(4)按下键值

DispatchPress(key_code)

具体key_code值,可以android developer。常用键,例如回车,值为66。

通常在输入数据后,都需要回车,以保住数据确实被输入至控件中(针对输入法)。

(5)等待

UserWait(ms)

单位为毫秒。通常用在耗时操作后,以等待操作完成,例如启动activity,或数据输入。

(二)脚本头,注释

Monkey的脚本头如下

# Start of Script  type= user  count= 1  speed= 1.0  start data >> 

“type”为脚本类型,可以自定义,无有效意义。
“count”为脚本的执行次数。但修改也无效。
“speed”为执行速度。但修改也无效。
“start data >>”之后将为脚本主体(APIs)。

脚本使用“#”进行单行注释

(三)编写脚本

我们利用前两部分的知识,对APP进行测试。
需求:
(1)启动activity
(2)输入数据
(3)点击按钮

首先,通过getevent获取控件坐标绝对值,并进行转换。
EditView(376,1119)
Button Show(555,1538)
Button A(127,774)
Button B(394,781)
Button C(747,808)
Button D(986,791)
直接上脚本

#Monkey Scripttype = userspeed = 1count = 1start data >>#Open ActivityLaunchActivity(com.breakloop.butterknifedemo,com.breakloop.butterknifedemo.MainActivity)UserWait(500)#Select EditDispatchPointer(0,0,0,376,1119,0,0,0,0,0,0,0)DispatchPointer(0,0,1,376,1119,0,0,0,0,0,0,0)UserWait(500)#Input ContentDispatchString(12345678)#UserWait(500)#Confirm Input in Flip#DispatchPointer(0,0,0,989,1726,0,0,0,0,0,0,0)#DispatchPointer(0,0,1,989,1726,0,0,0,0,0,0,0)#UserWait(500)#Close Flip#DispatchPointer(0,0,0,1012,1093,0,0,0,0,0,0,0)#DispatchPointer(0,0,1,1012,1093,0,0,0,0,0,0,0)DispatchFlip(false)UserWait(500)#Click Button ShowDispatchPointer(0,0,0,555,1538,0,0,0,0,0,0,0)DispatchPointer(0,0,1,555,1538,0,0,0,0,0,0,0)UserWait(500)#Click Button ADispatchPointer(0,0,0,127,774,0,0,0,0,0,0,0)DispatchPointer(0,0,1,127,774,0,0,0,0,0,0,0)UserWait(500)#Click Button BDispatchPointer(0,0,0,394,781,0,0,0,0,0,0,0)DispatchPointer(0,0,1,394,781,0,0,0,0,0,0,0)UserWait(500)#Click Button CDispatchPointer(0,0,0,747,808,0,0,0,0,0,0,0)DispatchPointer(0,0,1,747,808,0,0,0,0,0,0,0)UserWait(500)#Click Button DDispatchPointer(0,0,0,986,791,0,0,0,0,0,0,0)DispatchPointer(0,0,1,986,791,0,0,0,0,0,0,0)UserWait(500)

将脚本保存为script,文件无后缀名。

(四)执行脚本

需要将脚本拷贝至设备,才能执行。

C:\Users\XXXX>adb push C:\D\Monkey\script data/data/com.breakloop.butterknifedemoC:\D\Monkey\script: 1 file pushed. 0.1 MB/s (1300 bytes in 0.009s)C:\Users\XXXX>adb shell monkey -f data/data/com.breakloop.butterknifedemo/script -v 1 >C:\D\Monkey\Log.txt// Shell command input text 12345678 status was 0C:\Users\XXXX>

显示效果如下:
这里写图片描述

(五)总结

常见的Monkey API还有很多,但相对不常用。例如

LongPress(Key_code)//长按DispatchTrackball()//轨迹球DispatchKey//发送键值DispatchFlip(isOpen)//开关软键盘

至此,Monkey API部分完结。
我们不必纠结于掌握的Monkey API过少,因为Monkey是最基本的测试工具(相当于CMD)。经过多层的封装后,其交互会更为友好。之后,我们会总结MonkeyRunner(相当于VS),相对Monkey,它的使用将更为方便。

原创粉丝点击