Monkey启动MonkeyScript的命令为:
adbshell monkey -f <MonkeyScript> <EventCount>
需要注意的是,因为 adb shell
的运行环境是在待测试的Android设备上,所以需要将 MS脚本 push
到待测试的设备上,然后再进行运行。
这里有个坑可能push不到手机上面,我是push到/data/temp上面的,虽然设备是已经root过的,但是如果说拒绝访问的话,请将该文件夹的权限改了,执行命令:
chmod 777 文件夹
下面介绍一下一些常用的API,想查看完整的 API,可以选择点击下载这里http://download.youkuaiyun.com/download/lyl00ling/9972035
1:点击事件 DispatchPointer 通过对指定位置坐标信息发送单个手势消息,多用于模拟点击的操作。
DispatchPointer(long
· action:事件是按下还是抬起,0表示按下,1表示抬起。
· x、y:表示当前事件触发的X轴和Y轴的坐标
· 两个 DispatchPointer命令加在一起,分别表示按下和抬起,这表示一次点击操作,其余的参数,统一设置为 0 即可。
2:按键消息 DispatchKey
DispatchKey 主要是用于发送一些Android 标准的 EventKey 按键消息。但是需要写对应的值。
DispatchKey(long
具体的键值,可以通过官网查询:
https://developer.android.com/reference/android/view/KeyEvent.html
DispatchKey 消息的方法前面和DispatchPointer 一样,所以同样也只需要关注 action、x、y 三个参数即可。
3:开启关闭软键盘 DispatchFlip
DispatchFlip 命令用于打开或者关闭软键盘。它的方法签名如下:
DispatchFlip(boolean
其中的参数,true 表示打开,false 表示关闭。
4: 打开指定的Activity LaunchActivity
LaunchActivity 命令用于打开任意应用的一个页面,但是前提条件是打开的Activity 需要属性 android:exported 被设定为true,才可以通过 LaunchActivity 打开。它的方法签名如下:
LaunchActivity(String
它的两个参数,分别表示打开的 App 的包名和打开的 Activity 的名称。
5: 等待 UserWait
UserWait 命令用于让脚本中断执行一段时间。因为是脚本执行,多个事件之间执行的速度会非常的快,有时候我们需要等待一些事件触发之后的结果返回,需要等待一段时间之后,再继续执行脚本,这个时候就可以使用 UserWait 。
它的方法签名如下:
UserWait(long
sleepTime 的单位是毫秒。
7 :输入字符串 DispatchString
DispatchString 命令用于向 Shell 输入一个字符串。
它的方法签名如下:
DispatchString( input )
没什么好解释的, input 就是一个字符串即可,但是 MS 对中文的支持并不好,所以尽量输入英文的测试数据。
8:运行 Shell 命令 RunCmd
RunCmd 命令用于在设备上运行 shell 命令。当然这些 shell 命令必须是当前待测试设备支持的 shell 命令。
它的方法签名如下:
RunCmd ( cmd )
参数 cmd 就是需要执行的 shell 命令。
9:键盘事件 DispatchPress
DispatchPress 命令用于模拟敲击键盘的事件。
它的方法签名如下:
DispatchPress( keyName )
那么现在进入正题,编写脚本:
下面是对一个手机自带计算器的一个小的操作的脚本,用uiautomatorviewer来获取按键坐标啊,包名啊等信息。
type= raw events
count= 10
speed= 1.0
start data >>
LaunchActivity(com.android.calculator2,com.android.calculator2.Calculator)
#touch 9
#按下9按钮
DispatchPointer(0,0,0,400,700,0,0,0,0,0,0,0)
#弹起按钮
DispatchPointer(0,0,1,400,700,0,0,0,0,0,0,0)
#等待1500ms
UserWait(1500)
#touch 6
#DispatchPointer(0,0,0,400,900,0,0,0,0,0,0,0)
#DispatchPointer(0,0,1,400,900,0,0,0,0,0,0,0)
DispatchPress(KEYCODE_6)
UserWait(1500)
#touch +
DispatchPress(KEYCODE_PLUS)
UserWait(1500)
#touch 7
Tap(100,700,50)
UserWait(1500)
#touch =
DispatchPointer(0,0,0,630,1100,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,630,1100,0,0,0,0,0,0,0)
#DispatchPress(KEYCODE_EQUALS)
UserWait(1500)
#RotateScreen(2,1)屏幕翻转180°
#UserWait(1500)
将代码存为monkey.script,然后将数据push到手机(模拟器)设备上面,运行以下命令:
adb shell monkey -f /data/temp/monkey.script 1
此处的1表示执行脚本的次数(必须填写)
运行时候 就可以看到设备上面计算器真的按照脚本上面的代码一步一步地执行。