1.常用monkey脚本API介绍

# 启动应用的Activity

参数:包名和启动的Activity

LaunchActivity(pkg_name, cl_name)

# 模拟一次手指单击事件

参数:x,y为控件坐标,tapDuration为点击的持续时间

Tap(x, y, tapDuration)

# 休眠一段时间

UserWait(sleepTime)

# 输入字符串

DispatchString(input)

# 打开或者关闭软键盘

DispatchFlip(true/false)

# 模拟用户的长按事件

PressAndHold(x, y, pressDuration)

# 用于模拟用户的一个拖拽操作

Drag(xStart, yStart, xEnd, yEnd, stepCount)

# 模拟用户的缩放手势

PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount)

# 长按2秒

LongPress()

# 唤醒屏幕

DeviceWakeUp()

# 等待5秒

ProfileWait

# 获取帧率

StartCaptureFramerate()

# 结束获取帧率

EndCaptureFramerate(input)

# 用来模拟电池电量信息

PowerLog(power_log_type, test_case_status)

# 将电池信息写入sd卡

WriteLog()

# 运行shell命令

RunCmd(cmd)

# 执行一个instrumentation测试用例

LaunchInstrumentation(test_name,runner_name)

# 向指定的位置,发送单个手势

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags)

# 发送按键消息

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags)

2.monkey脚本的格式

Monkey 的脚本内容主要包含两部分:一个是头文件信息,另一个是具体的Monkey命令

脚本格式:

type = raw events # = 两边一定要留空格,如果不留空格的话会报错

count = 1 # 指脚本执行的次数

speed = 1.0 # 指脚本执行的速率

# 下面为monkey命令

start data >>

# 具体的monkey脚本内容

3.实际例子

以豌豆荚App为例

(1)安装豌豆荚App

打开cmd命令行输入如下命令:

adb install E:\DownLoad\Test\豌豆荚.apk

(2)查看豌豆荚的Activity

a.首先安装AndroidSDK,然后配置aapt环境变量(路径:D:\Android\AndroidSDK\build-tools\28.0.3)

b.打开cmd,输入如下命令

aapt dump badging E:\DownLoad\Test\豌豆荚.apk > E:\test.log

c.去对应的路径打开test.log文件

按下快捷键Ctrl+F,通过package: name=查找包名,通过launchable-activity: name查找启动的Activity的名

(3)编写monkey脚本

a.新建wdj.txt文件,复制粘贴固定的头文件信息

# wdj.txt

# 头文件信息

type = raw events

count = 1

speed = 1.0

# 启动测试

start data >>

b.打开指针位置设置

路径:设置—>开发者选项—>指针位置

c.编写具体monkey指令

完整脚本如下:

# wdj.txt

# 头文件信息

type = raw events

count = 1

speed = 1.0

# 启动测试

start data >>

LaunchActivity(com.wandoujia.phoenix2,com.pp.assistant.activity.PPMainActivity)

UserWait(1000)

Tap(24.8,55.9,500) # 点击左上角图标进入管理页面

UserWait(1000)

Tap(91.8, 449.3,500) # 点击垃圾清理进入深度清理页面

UserWait(1000)

Tap(231.5,771,300) # 点击一键清理

(4)执行monkey脚本

在cmd命令行输入如下命令:

adb push E:\DownLoad\Test\wdj.txt /sdcard

adb shell monkey -f /sdcard/wdj.txt -v 1

(5)日志管理

adb shell monkey -f /sdcard/wdj.txt -v 1 1 > /存放路径/right.txt 2 > /存放路径/error.txt

例子的monkey脚本比较简单,更复杂的方法类似