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题