monkey script 用法和相关参数
Posted chunhui0321
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了monkey script 用法和相关参数相关的知识,希望对你有一定的参考价值。
前言:作者做为一个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
|
|
|
|
|
|
|
以上是关于monkey script 用法和相关参数的主要内容,如果未能解决你的问题,请参考以下文章
Monkey自动化测试
hihocoder #1828 : Saving Tang Monk II(BFS)
hihocoder 1828 Saving Tang Monk II (DP+BFS)
hdu 5025 Saving Tang Monk(bfs+状态压缩)
Monkey log分析说明
Saving Tang Monk II HihoCoder - 1828 2018北京赛站网络赛A题