一、前言
本文档记录了和 MonkeyScript 相关的 API 文档,由承香墨影整理。所有 API 描述均来自 MonkeySourceScript.java 。
也可以自行查看源码,在线阅读地址:
http://androidxref.com/5.1.1_r6/xref/development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java
希望在阅读本文档前,你已经掌握了基本的 Monkey Script 的操作,可以在本公众号回复『MonkeyScript如何写脚本』
二、MonkeyScript API
1、点击事件(DispatchPointer)
DispatchPointer 命令用于向一个指定的坐标位置,发送单个手势消息,一般用它来模拟点击的操作。
它完整的方法签名是:
DispatchPointer ( downTime , eventTime , action , x , y , pressure , size , metaState , xPrecision , yPrecision , device , edgeFlags)
其实这么多参数,只需要关注action 、 x 、y 三个参数即可。
- action :事件是按下还是抬起,0 表示按下,1 表示抬起。
- x、y:表示当前事件触发的X轴和Y轴的坐标。
也就是说,两个 DispatchPointer 命令加在一起,分别表示 按下 和 抬起 ,这表示一次点击操作,其余的参数,统一设置为 0 即可。
2、按键事件(DispatchKey)
DispatchKey 主要是用于发送一些 Android 标准的 EventKey 按键消息。但是需要写对应的值。
它的方法签名如下:
DiapatchKey ( downTime ,eventTime ,action ,code ,repeat ,metaState ,device ,scancode)
DispatchKey 实际上也只需要关注,action、code、repeat即可。
- action : 消息的类型。0 表示按下,1 表示抬起。
- code:按键的值。参考KeyEvent。
- repeat:按键重复的次数
具体的键值,可以通过官网查询:
https://developer.android.com/reference/android/view/KeyEvent.html
3、轨迹球(DispatchTrackball)
DispatchTrackball 命令用于像一个指定位置发送单个轨迹球的消息。它的方法前面也与 DispatchPointer 一样。
4、旋转屏幕(RotateScreen)
RotateScreen 命令用于发送旋转测试设备屏幕方式的事件。
它的方法签名如下:
RotateScreen ( rotationDegree , persist)
其中的参数:
- rotateDegree:旋转的角度。
- persist:是否保持旋转前的状态。0 为不保持,1 为保持。
rotateDegree,可配置的角度可以参考 android.view.Surface里的常量进行配置,可选的角度有 4 个:
- ROTATION_0
- ROTATION_90
- ROTATION_180
- ROTATION_270
5、软键盘开关(DispatchFlip)
DispatchFlip 命令用于打开或者关闭软键盘。它的方法签名如下:
DispatchFlip (keyboardOpen)
其中的参数,true 表示打开,false 表示关闭。
6、键盘事件(DispatchPress)
DispatchPress 命令用于模拟敲击键盘的事件。
它的方法签名如下:
DispatchPress( keyName )
7、启动Activity(LaunchActivity)
LaunchActivity 命令用于打开任意应用的一个页面,但是前提条件是打开的Activity 需要属性 android:exported 被设定为true,才可以通过 LaunchActivity 打开。它的方法签名如下:
LaunchActivity ( pkg_name , act_name )
它的两个参数,分别表示打开的 App 的包名和打开的 Activity 的名称。
8、等待(UserWait)
UserWait 命令用于让脚本中断执行一段时间。因为是脚本执行,多个事件之间执行的速度会非常的快,有时候我们需要等待一些事件触发之后的结果返回,需要等待一段时间之后,再继续执行脚本,这个时候就可以使用 UserWait 。
它的方法签名如下:
UserWait ( sleepTime )
sleepTime 的单位是毫秒。
9、输入字符串(DispatchString)
DispatchString 命令用于向 Shell 输入一个字符串。
它的方法签名如下:
DispatchString( input )
没什么好解释的, input 就是一个字符串即可,但是 MS 对中文的支持并不好,所以尽量输入英文的测试数据。
10、长按(LongPress)
LongPress 命令用于模拟长按时间,标准为长按 2s 。它是一个无参的方法,直接调用即可。
11、运行 Shell 命令(RunCmd)
RunCmd 命令用于在设备上运行 shell 命令。当然这些 shell 命令必须是当前待测试设备支持的 shell 命令。
它的方法签名如下:
RunCmd ( cmd )
参数 cmd 就是需要执行的 shell 命令。
12、手指单击(Tap)
Tap 命令用于模拟一次手指单击事件。
它的方法签名如下:
Tap( x ,y ,tapDuration)
tapDuration 参数,表示当前单击的持续时间,可选参数。
13、唤醒设备并解锁(DeviceWakeUp)
DeviceWakeUp 命令可以唤醒设备,并进行解锁。当然需要是一个无加密的设备才可以,有数字密码或者图形密码,都会导致失败。
14、等待5s(ProfileWait)
ProfileWait 命令和 UserWait 类似,但是它已经设定好等待的时长,就是 5s ,直接调用即可。
15、长按消息(PressAndHold)
PressAndHold 命令用于模拟一个长按事件,和 LongPress 类似,但是它是可以定制长按时长的。
它的方法签名如下:
PressAndHold( x, y, pressDuration)
16、拖拽(Drag)
Drag 命令用于模拟一个按住拖拽的动作。
它的方法签名如下:
Drag( xStart, yStart, xEnd, yEnd, stepCount)
前面四个参数分别表示了事件开始的坐标点,和结束的坐标点。唯一需要解释的是stepCount ,因为拖拽事件是一组连续的事件,这个参数可以指定当前拖拽事件,是由多少个小事件组成的,越多,越连贯。
17、缩放事件(PinchZoom)
PinchZoom 命令用于模拟缩放手势。
它的方法签名如下:
PinchZoom( pt1xStart, pt1yStart, pt1xEnd, pt1yEnd, pt2xStart, pt2yStart, pt2xEnd, pt2yEnd, stepCount)
它的参数分别表示了两个手指的开始位置和结束位置,并且设定了完成了多少次缩放操作。