• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
紫恋蓝辉
博客园    首页    新随笔    联系   管理    订阅  订阅

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

 

 

 

 

 

 

 
 
posted @ 2020-01-11 01:07  紫恋蓝辉  阅读(614)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3