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

本篇我们将讲述常用的五个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 Script
type = user
speed = 1
count = 1
start data >>

#Open Activity
LaunchActivity(com.breakloop.butterknifedemo,com.breakloop.butterknifedemo.MainActivity)
UserWait(500)

#Select Edit
DispatchPointer(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 Content
DispatchString(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 Show
DispatchPointer(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 A
DispatchPointer(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 B
DispatchPointer(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 C
DispatchPointer(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 D
DispatchPointer(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.butterknifed
emo
C:\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/scri
pt -v 1 >C:\D\Monkey\Log.txt
// Shell command input text 12345678 status was 0

C:\Users\XXXX>

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

(五)总结

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

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

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

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值