前言:作者做为一个monkeyscript脚本的初次使用者,在写monkeyscript时发现很多资料讲解的不是很全,因此做比较全面的整理。有不对的地方多多指正,QQ:461087346
写monkeyscript的目的在于通过脚本实现一些有规律的操作,monkey是随机的事件操作无规律可以进行,虽然有随机种子,但是随机种子只能重复上次进行的步骤执行,不能进行有规律有计划的操作。
monkey script的事件操作
1.点击事件(DispatchPointer)
DispatchPointer用于向一个执行的坐标位置发送单个手势消息,一般用户模拟点击的操作
DispatchPointer具体的参数为:
DispatchPointer ( downTime , eventTime , action , x , y , pressure , size , metaState , xPrecision , yPrecision , device , edgeFlags)
每个参数的定义如下
long downTime //键最初被按下的时间
long eventTime //事件发生的时间
int action //(ACTION_DOWN=0,ACTION_MOVE=1,ACTION_UP=2,ACTION_CANCEL=3)
float x //x坐标
float y //y坐标
float pressure //当前事件的压力,范围0-1
float size //触摸的近似值,范围0-1
int metaState //当前按下的meta键的标识
float xPrecision //x坐标精确值
float yPrecision //y坐标精确值
int device //事件来源,范围0-x,0表示不来自物理设备
int sedgeFlags //
点击事件中最常用的参数只有三个action,x,y,其中action中数字0代表按下,1代表抬起最为常用。参数中的其他参数都是设置为默认的为0。
2.按键事件(DispatchKey)
DispatchKey 主要发送Android一些标准的EventKey(事件键值)按键消息,需要输入指定的对应code码
DispatchKey具体参数如下:
DiapatchKey ( downTime ,eventTime ,action ,code ,repeat ,metaState ,device ,scancode)
每个参数定义如下
long downTime //键最初被按下的时间
long eventTime //事件发生的时间
int action //(ACTION_DOWN=0,ACTION_UP=1,ACTION_MULTIPLE=2)
int code //键值,比如KEYCODE_DPAD_DOWN(20)
int repeat // 重复次数
int metaState //当前按下的meta键的标识
int device //事件发生的设备id
int scancode //
按键事件同点击事件一样只需要关注的参数是action,code,repeat三个参数,action同样是0代表按下,1代表抬起。其余的参数可以设置成默认参数0。
3.轨迹球事件(DispatchTrackball)
DispatchTrackball 主要用于向一个指定位置发送单个轨迹球消息。
DispatchTrackball(long downtime,long eventtide,int action,float x,float y,float pressure,float size,int metastate,float xprecision,float yprecision,int device,int edgeflags)
每个参数的定义如下
long downtime//指键最初被按下的时间
long eventtide//指事件发生的时间
int action//指具体操作的动作,如按下
float x,float y//指x和y的坐标
float pressure//压力事件的大小(0~1)
float size//指触摸的记事值(0~1)
int metastate//指当前按下mate键的标识
int device//事件的来源(0~x)
float xprecision,float yprecision//指x和y坐标的精确值
int edgeflags//指超出屏幕了范围
其中参数中action:0代表按下,1代表弹起;最常用的参数是action,x,y。
4.拖拽(Drg)
Drg用户模拟一个按钮拖拽
Drag( xStart, yStart, xEnd, yEnd, stepCount)
具体参数如下
xStart, yStart//拖拽的起点位置坐标
xEnd, yEnd//拖拽的终点位置坐标
stepCount//拖拽的事件
注:stepCount拖拽的事件是指有多少个小事件,小事件数目越多操作越连贯
5.缩放事件(PinchZoom)
PinchZoom用于模拟缩放(两指头操作)
PinchZoom( pt1xStart, pt1yStart, pt1xEnd, pt1yEnd, pt2xStart, pt2yStart, pt2xEnd, pt2yEnd, stepCount)
具体参数如下
pt1xStart, pt1yStart//开始的坐标位置1
pt1xEnd, pt1yEnd//结束的坐标位置1
pt2xStart, pt2yStart//开始的坐标位置2
pt2xEnd, pt2yEnd//结束的坐标位置2
stepCount//事件
其中stepCount设置事件多少次完成缩放
6.手指单击事件(Tap)
Tap用于模拟手指一次单机事件
Tap(x,y,tapDuration)
具体参数如下
x,y//为坐标参数
tapDuration//时间
注:tapDuration时间长了可以模拟长按
7.长按事件(LongPress)
LongPress()
LongPress 命令用于模拟长按时间,标准为长按 2s 。它是一个无参的方法,直接调用即可
8.长按(消息)事件(PressAndHold)
PressAndHold用于模拟一个长按时间
PressAndHold( x, y, pressDuration)
参数定义如下
x,y//坐标位置
pressDuration//时间
和 LongPress 类似,但是它是可以定制长按时长的
9.唤醒设备并解锁设备(DeviceWakeUp)
DeviceWakeUp()
DeviceWakeUp 命令可以唤醒设备,并进行解锁。当然需要是一个无加密的设备才可以,有数字密码或者图形密码,都会导致失败。
10.等待5s时间(ProfileWait)
ProfileWait()
ProfileWait已经设定好等待的时长,就是 5s ,直接调用即可
11.等待事件(UserWait)
UserWait(sleepTime)
参数定义如下
sleepTime//参数单位为毫秒
UserWait 命令用于让脚本中断执行一段时间。因为是脚本执行,多个事件之间执行的速度会非常的快,有时候我们需要等待一些事件触发之后的结果返回,需要等待一段时间之后,再继续执行脚本。
12.输入字符串时间(DispatchString)
DispatchString用于向 Shell 输入一个字符串
DispatchString( input )
参数定义如下
input//输入字符串参数
注:MS 对中文的支持并不好,所以尽量输入英文的测试数据
13.运行shell命令(RunCmd)
RunCmd 命令用于在设备上运行 shell 命令。当然这些 shell 命令必须是当前待测试设备支持的 shell 命令
RunCmd ( cmd )
参数定义如下
cmd//需要执行的shell命令
14.键盘事件(DispatchPress)
DispatchPress 命令用于模拟敲击键盘的事件
DispatchPress( keyName )
参数定义如下
keyName//键盘上名字(见下键盘对应表)
15.软键盘开关(DispatchFlip)
DispatchFlip用于打开或者关闭软键盘
DispatchFlip (keyboardOpen)
参数定义如下
keyboardOpen//布尔值
16.旋转屏幕(RotateScreen)
RotateScreen用于发送旋转测试设备屏幕事件
RotateScreen ( rotationDegree , persist)
参数定义如下
rotateDegree//旋转的角度。
persist//是否保持旋转前的状态。0 为不保持,1 为保持
注:旋转的角度只能是90的倍数,只有4个角度可选。
17.启动Activity(LaunchActivity)
如果未进行设置,可以手动打开appLaunchActivity用于打开任意应用的一个页面,但是前提条件是打开的Activity 需要属性 android:exported 被设定为true,才可以通过 LaunchActivity 打开
如果未进行设置,可以手动打开app
LaunchActivity ( pkg_name , act_name )
参数定义如下
pkg_name//启动的app名字
act_name//打开的 Activity 的名称
======键盘对应值摘自https://blog.csdn.net/letsstudy/article/details/89077389
字母和数字键的键码值(keyCode) |
|||||||
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
A |
65 |
J |
74 |
S |
83 |
1 |
49 |
B |
66 |
K |
75 |
T |
84 |
2 |
50 |
C |
67 |
L |
76 |
U |
85 |
3 |
51 |
D |
68 |
M |
77 |
V |
86 |
4 |
52 |
E |
69 |
N |
78 |
W |
87 |
5 |
53 |
F |
70 |
O |
79 |
X |
88 |
6 |
54 |
G |
71 |
P |
80 |
Y |
89 |
7 |
55 |
H |
72 |
Q |
81 |
Z |
90 |
8 |
56 |
I |
73 |
R |
82 |
0 |
48 |
9 |
57 |
数字键盘上的键的键码值(keyCode) |
功能键键码值(keyCode) |
||||||
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
0 |
96 |
8 |
104 |
F1 |
112 |
F7 |
118 |
1 |
97 |
9 |
105 |
F2 |
113 |
F8 |
119 |
2 |
98 |
* |
106 |
F3 |
114 |
F9 |
120 |
3 |
99 |
+ |
107 |
F4 |
115 |
F10 |
121 |
4 |
100 |
Enter |
108 |
F5 |
116 |
F11 |
122 |
5 |
101 |
- |
109 |
F6 |
117 |
F12 |
123 |
6 |
102 |
. |
110 |
||||
7 |
103 |
/ |
111 |
控制键键码值(keyCode) |
|||||||
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
BackSpace |
8 |
Esc |
27 |
Right Arrow |
39 |
-_ |
189 |
Tab |
9 |
Spacebar |
32 |
Dw Arrow |
40 |
.> |
190 |
Clear |
12 |
Page Up |
33 |
Insert |
45 |
/? |
191 |
Enter |
13 |
Page Down |
34 |
Delete |
46 |
`~ |
192 |
Shift |
16 |
End |
35 |
Num Lock |
144 |
[{ |
219 |
Control |
17 |
Home |
36 |
;: |
186 |
\| |
220 |
Alt |
18 |
Left Arrow |
37 |
=+ |
187 |
]} |
221 |
Cape Lock |
20 |
Up Arrow |
38 |
,< |
188 |
‘" |
222 |
多媒体键码值(keyCode) |
|||||||
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
音量加 |
175 |
||||||
音量减 |
174 |
||||||
停止 |
179 |
||||||
静音 |
173 |
||||||
浏览器 |
172 |
||||||
邮件 |
180 |
||||||
搜索 |
170 |
||||||
收藏 |
171 |
原文地址:https://www.cnblogs.com/chunhui0321/p/12175616.html