Monkey脚本API简介
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脚本格式:
Monkey脚本主要包含两部分,一部分是头文件信息,一部分是具体的monkey命令。
type = raw events
count = 1
speed = 1.0
#启动测试
start data >>
#具体的monkey脚本内容
type = raw events #注意等号两边必须有空格
count = 1
speed = 1.0
start data >> #启动测试
LaunchActivity(com.tal.kaoyan,com.tal.kaoyan.ui.activity.SplashActivity)
UserWait(2000)
Tap(633,903,1000) #点击取消升级按钮
UserWait(2000)
Tap(806,64,1000) #点击跳过按钮
UserWait(2000)
Tap(217,378,1000) #点击用户名输入框
DispatchString(zxw123)
UserWait(2000)
Tap(197,461,1000) #点击密码输入框
DispatchString(zxw123)
UserWait(2000)
Tap(343,637,1000) #点击登录按钮
#注:这些中文注释,在真实的测试脚本中不能存在,否则脚本执行报错
执行测试:
(1)、首先找到要测试的包的包名package和LaunchActivity
aapt dump badging C:\Users\chawey\Desktop\kaoyanbang.opdown.com.apk
(2)、上传脚本文件到设备
adb push C:\Users\chawey\Desktop\monkey.txt /cache/
(3)、执行测试
adb shell monkey -f /cache/monkey.txt -v -v 1
Monkey日志管理
Monkey日志管理
1、日志保存至PC机上
adb shell monkey -v -v 100 > d:\monkey.log
2、日志区分标准流和错误流分开保存至PC机上
adb shell monkey -v -v 100 1>d:\monkey.log 2>d:\error.log
3、日志保存至设备上
adb shell 进入shell
monkey -v -v 100 > /cache/monkey.log
注:不能写成 adb shell monkey -f /sdcard/kyb.txt -v 1 > /cache/monkey.log 否则会报错"系统找不到指定的路径"
日志样例:
:Monkey: seed=1642754853715 count=100
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// Selecting main activities from category android.intent.category.LAUNCHER
// + Using main activity com.android.browser.BrowserActivity (from package com.android.browser)
// + Using main activity com.android.camera.CameraLauncher (from package com.android.camera2)
// + Using main activity com.android.gallery3d.app.GalleryActivity (from package com.android.gallery3d)
// + Using main activity com.android.settings.Settings (from package com.android.settings)
// + Using main activity com.amaze.filemanager.activities.MainActivity (from package com.amaze.filemanager)
// + Using main activity com.android.Calendar.ui.activity.MainActivity (from package com.android.Calendar)
// + Using main activity com.android.calculator2.MainActivity (from package com.android.calculator2)
// + Using main activity com.android.deskclock.MainActivity (from package com.android.deskclock)
// + Using main activity com.android.documentsui.LauncherActivity (from package com.android.documentsui)
// + Using main activity com.tal.kaoyan.ui.activity.SplashActivity (from package com.tal.kaoyan)
// + Using main activity com.pp.assistant.activity.PPMainActivity (from package com.wandoujia.phoenix2)
// Selecting main activities from category android.intent.category.MONKEY
// + Using main activity com.android.launcher3.launcher3.Launcher (from package com.android.launcher3)
// + Using main activity com.android.settings.Settings$RunningServicesActivity (from package com.android.settings)
// + Using main activity com.android.settings.Settings$StorageUseActivity (from package com.android.settings)
// Seeded: 1642754853715
// Event percentages:
// 0: 15.0%
// 1: 10.0%
// 2: 2.0%
// 3: 15.0%
// 4: -0.0%
// 5: -0.0%
// 6: 25.0%
// 7: 15.0%
// 8: 2.0%
// 9: 2.0%
// 10: 1.0%
// 11: 13.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.browser/.BrowserActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.browser/.BrowserActivity } in package com.android.browser
Sleeping for 0 milliseconds
:Sending Trackball (ACTION_MOVE): 0:(4.0,-2.0)
:Sending Trackball (ACTION_MOVE): 0:(-3.0,2.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,-1.0)
:Sending Trackball (ACTION_MOVE): 0:(-4.0,-3.0)
:Sending Trackball (ACTION_MOVE): 0:(-5.0,-4.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,-2.0)
:Sending Trackball (ACTION_MOVE): 0:(0.0,1.0)
:Sending Trackball (ACTION_MOVE): 0:(-5.0,-5.0)
:Sending Trackball (ACTION_MOVE): 0:(0.0,-1.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(-5.0,-5.0)
:Sending Trackball (ACTION_MOVE): 0:(-3.0,2.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,-4.0)
:Sending Trackball (ACTION_MOVE): 0:(2.0,-1.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,1.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,-1.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,1.0)
:Sending Trackball (ACTION_MOVE): 0:(-3.0,2.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,-3.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,3.0)
:Sending Trackball (ACTION_MOVE): 0:(2.0,1.0)
:Sending Trackball (ACTION_MOVE): 0:(-3.0,-3.0)
:Sending Trackball (ACTION_MOVE): 0:(-4.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,3.0)
:Sending Trackball (ACTION_MOVE): 0:(-5.0,-2.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(2.0,2.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,2.0)
:Sending Touch (ACTION_DOWN): 0:(742.0,1456.0)
:Sending Touch (ACTION_MOVE): 0:(743.49817,1455.9059)
:Sending Touch (ACTION_MOVE): 0:(753.2797,1454.5524)
:Sending Touch (ACTION_MOVE): 0:(754.5631,1454.1804)
:Sending Touch (ACTION_MOVE): 0:(762.12604,1452.7964)
:Sending Touch (ACTION_MOVE): 0:(770.7902,1451.635)
:Sending Touch (ACTION_MOVE): 0:(781.38214,1450.5787)
:Sending Touch (ACTION_MOVE): 0:(781.5714,1450.3865)
:Sending Touch (ACTION_MOVE): 0:(789.5314,1450.0535)
:Sending Touch (ACTION_UP): 0:(789.66785,1449.1233)
Sleeping for 0 milliseconds
:Sending Flip keyboardOpen=false
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(240.0,610.0)
:Sending Touch (ACTION_UP): 0:(238.61252,601.4705)
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_UP): 23 // KEYCODE_DPAD_CENTER
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_UP): 23 // KEYCODE_DPAD_CENTER
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21 // KEYCODE_DPAD_LEFT
Sleeping for 0 milliseconds
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.amaze.filemanager/.activities.MainActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.amaze.filemanager/.activities.MainActivity } in package com.amaze.filemanager
Sleeping for 0 milliseconds
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.calculator2/.MainActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.calculator2/.MainActivity } in package com.android.calculator2
Sleeping for 0 milliseconds
:Sending Trackball (ACTION_MOVE): 0:(3.0,0.0)
:Sending Trackball (ACTION_MOVE): 0:(-3.0,-3.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,-5.0)
:Sending Trackball (ACTION_MOVE): 0:(0.0,-3.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,-1.0)
:Sending Trackball (ACTION_MOVE): 0:(-3.0,0.0)
:Sending Trackball (ACTION_MOVE): 0:(-5.0,-5.0)
:Sending Trackball (ACTION_MOVE): 0:(0.0,-1.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,3.0)
:Sending Trackball (ACTION_MOVE): 0:(-4.0,1.0)
:Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21 // KEYCODE_DPAD_LEFT
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(1198.0,851.0)
:Sending Touch (ACTION_MOVE): 0:(1201.0214,847.19324)
:Sending Touch (ACTION_MOVE): 0:(1206.2993,840.98413)
:Sending Touch (ACTION_MOVE): 0:(1207.4199,832.43884)
:Sending Touch (ACTION_MOVE): 0:(1210.113,829.9012)
:Sending Touch (ACTION_MOVE): 0:(1211.4093,828.4381)
:Sending Touch (ACTION_MOVE): 0:(1215.7728,825.83307)
:Sending Touch (ACTION_MOVE): 0:(1217.6183,818.6283)
:Sending Touch (ACTION_MOVE): 0:(1220.4448,807.3662)
:Sending Touch (ACTION_MOVE): 0:(1222.1752,796.54065)
:Sending Touch (ACTION_UP): 0:(1226.9751,793.49304)
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(601.0,315.0)
:Sending Touch (ACTION_MOVE): 0:(595.86804,313.86035)
:Sending Touch (ACTION_MOVE): 0:(591.1642,313.72913)
:Sending Touch (ACTION_MOVE): 0:(587.6222,313.02234)
:Sending Touch (ACTION_MOVE): 0:(583.5219,312.91266)
:Sending Touch (ACTION_MOVE): 0:(582.8331,312.62967)
:Sending Touch (ACTION_MOVE): 0:(582.6208,312.25565)
:Sending Touch (ACTION_MOVE): 0:(579.6371,310.88022)
:Sending Touch (ACTION_MOVE): 0:(575.411,310.04507)
:Sending Touch (ACTION_MOVE): 0:(572.2668,308.72028)
:Sending Touch (ACTION_UP): 0:(568.21643,307.85904)
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(813.0,866.0)
:Sending Touch (ACTION_UP): 0:(819.67896,878.4972)
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21 // KEYCODE_DPAD_LEFT
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 19 // KEYCODE_DPAD_UP
:Sending Key (ACTION_UP): 19 // KEYCODE_DPAD_UP
Sleeping for 0 milliseconds
:Sending Trackball (ACTION_MOVE): 0:(-4.0,3.0)
:Sending Trackball (ACTION_MOVE): 0:(2.0,2.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,1.0)
:Sending Trackball (ACTION_MOVE): 0:(-2.0,0.0)
:Sending Trackball (ACTION_MOVE): 0:(-2.0,0.0)
:Sending Trackball (ACTION_MOVE): 0:(3.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(-3.0,-3.0)
:Sending Trackball (ACTION_MOVE): 0:(-2.0,0.0)
Events injected: 100
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=1222ms (0ms mobile, 0ms wifi, 1222ms not connected)
// Monkey finished