常规Monkey测试执行随机事件流,但如果你只是想Monkey在测试特定场景时,需要使用自定义脚本,Monkey支持用户自定义脚本测试的执行,用户只需循Monkey脚本的规格写好脚本,存放在手机上,启动Monkey通过-f 调用脚本参数。
启动考研帮app3.1.然后跳过升级提示和引导页面,进入登录界面,输入用户名密码登录。
- 如何从用户的角度思考步骤?
- 如何定位要操作的元素?
- 如何将操作步骤转化为测试脚本?
Monkey脚本只能通过定位点击和移动事件的屏幕位置需要提前获取坐标信息。获取坐标信息的方法有很多。最简单的方法是打开手机中的开发人员选项和显示指针位置。然后,坐标信息将显示在屏幕上的每个操作和导航栏上。
LaunchActivity(pkg_name, cl_name):启动应用的Activity。参数:包名和启动Activity。
Tap(x, y, tapDuration): 模拟手指单击事件。x,y为控件坐标,tapDuration这个参数可以省略点击的持续时间。
UserWait(sleepTime): 休眠一段时间
DispatchPress(keyName): 按钮。 keycode。 RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree旋转角度, e.g. 1代表90度;persist表示旋转后是否固定,0表示旋转后恢复,0表示固定不变。
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): 模拟缩放手势。
LongPress(): 长按2秒。
DeviceWakeUp(): 唤醒屏幕。
PowerLog(power_log_type, test_case_status): 模拟电池电量信息。
WriteLog(): 写入电池信息sd卡。
RunCmd(cmd): 运行shell命令。
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,发送单个手势。
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 发送按键消息。
LaunchInstrumentation(test_name,runner_name): 运行一个instrumentation测试用例。
DispatchTrackball: 模拟发送轨迹球事件。
ProfileWait: 等待5秒。
StartCaptureFramerate(): 获取帧率。
EndCaptureFramerate(input): 结束获取帧率。
Monkey脚本主要包含两部分,一部分是头文件信息,一部分是具体的monkey命令。
type = raw events
count = 1
speed = 1.0
//
下面为monkey
命令
start data >>
具体的monkey
脚本内容
kyb.txt
#
头文件信息
type = raw events
count =
1
speed =
1.0
#
启动测试
start data >>
(com.tal.kaoyan,com.tal.kaoyan.ui.activity.SplashActivity)
(2000)
(624,900,1000) #
点击取消升级
(2000)
(806,64,1000) #
点击跳过
(2000)
(217,378,1000) #
点击用户名输入框
(zxw1234)
(2000)
(197,461,1000) #
点击密码输入框
(zxw123456)
(2000)
(343,637,1000) #
点击登录按钮
脚本编写完成后,传到手机设备上,然后执行。
adb push C:\Users\Shuqing\Desktop\kyb1
.txt/sdcard
adb shell monkey -f /sdcard/kyb1
.txt-v
1
执行结果
C:\Users\Shuqing>adb shell monkey -f /sdcard/kyb.txt -v 1
seed=1524592021303 count=1
android.intent.category.LAUNCHER
android.intent.category.MONKEY
Replaying 0 events with speed 1.0
#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.tal.kaoyan/.ui.activity.SplashActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.tal.kaoyan/.ui.activity.SplashActivity } in package com.tal.kaoyan
0:(267.0,1233.0)
// Allowing start of Intent { act=com.android.systemui.recent.action.TOGGLE_RECENTS cmp=com.android.systemui/.recent.RecentsActivity } in package com.android.systemui
0:(267.0,1233.0)
Events injected: 5
:Sending rotation degree=0, persist=false
keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=7201ms (0ms mobile, 0ms wifi, 7201ms not connected)
// Monkey finished
头文件代码书写注意“=”两边预留空格,否则会出现如下报错。
java
.lang.NumberFormatException: Invalid int:
""
Monkey脚本API简介 - #天羽Owl - 博客园