monkey脚本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
monkey脚本
前面更新的关于monkey的参数等内容都是关于monkey随机性的测试,今天我们要整理的monkey脚本是关于特定场景的测试,monkey支持用户自动以测试脚本,我们只需按照monkey的脚本规范写好脚本,并将脚本放到手机上,启动monkey通过-f参数调用脚本即可。
测试场景:以我们单位自己的APP为例,做一个登录场景的测试。
需求分析:1、登录的操作步骤2、如何定位元素,并输入相应的用户名和密码3、怎样转化为脚本针对上面三个问题我们分步解答操作步骤1、首先我们要在手机上点击APP的图标(也就是包),启动程序,进入启动页面。
2、然后点击用户名的输入框(定位到用户名输入框),输入用户名。
3、点击密码输入框,(定位到密码输入框),输入密码。
4、点击【登录】按钮(定位到登录按钮,并单击)元素定位Monkey脚本通过坐标的方式来定位点击和移动时间的屏幕位置,这里需要提前获取坐标信息。
获取坐标信息在开发者选项->指针位置。
打开指针位置后,当我们点击屏幕的任意位置,在页面的顶端都
会显示坐标位置,如图:
编写脚本在编写脚本之前,我们首先要了解一下常用的Monkey 脚本API。
1、LaunchActivity(pkg_name,cl_name):启动应用的Activity。
参数:包名和启动的Activity。
2、Tap (x,y,tapDuration):模拟一次手指单击事件。
参数:x,y为控件坐标,tapDuration为单击的持续时间,此参数可忽略。
3、UserWait(sleepTime):休眠一段时间4、DispatchPress (keyName):按键。
参数:keycode。
5、RotateScreen
(rotationDegree,persist):屏幕旋转。
参数:rotationDegree 为旋转角度,eg:1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。
6、DispatchString(input):输入字符串7、DispatchFile(true/false):打开或者关闭软键盘8、PressAndHold(x,y,pressDuration):模拟长按事件。
9、Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作。
10、PinchZoom(x1Start, y1Start,x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。
11、LongPress (2):长按2秒12、DeviceWakeUp(): 唤醒屏幕。
13、PowerLog (power_log_tpye,test_case_status):模拟电池电量信息14、ProfileWait:等待5秒Monkey脚本格式Monkey脚本主要分为两部分,一部分是头信息文件,另一部分是具体的monkey命令。
•
•
•
•
•
•
•
#头文件,控制monkey发送消息的参数type = raw events #脚本类型count = 1 #脚本执行的次数speed = 1.0 #脚本执行的速度#以下是monkey执行的命令start data >>LaunchActivity(pkg_name,activity) #启动包、Activity 在编写脚本之前,我们首先要得到两个信息,一个是包名,另一个是launchable-activity的名称。
获取报名信息,执行命令:
•
•
adb shellpm list package -3
然后,获取launchable-activity名称(启动页面名称),使用aapt dump[参数] <apk文件>查询命令,执行命令:
•
aapt dump badging apk路径 | findstr launchable-activity
编写脚本1、在桌面新建txt文件2、按照脚本格式编写头文件和monkey命令
3、获取用户名输入框、密码输入框、【登录】按钮的坐标,如图示例:
4、根据提前整理的测试步骤输入相应的命令,
5、将脚本push到手机/sdcard目录下
6、执行脚本,执行命令:
•
adb shell monkey -f /sdcard/login.txt -v 1
就可以让monkey按照脚本的固定场景执行测试了。
7、下面附上脚本源码,以及monkey打印日志。
源码:(因为程序和手机的原因,在时间控制和操作上做了些调整,不影响使用)
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
type = raw eventscount = 1speed = 1.0 start data >>LaunchActivity(com.uzone.zztabc,io.dcloud.PandoraEntr
y) UserWait(6000) Tap(225,515,200)DispatchString(用户名)DispatchFile(false)UserWait(2000) Tap(437,657,200)DispatchString(密码)DispatchFile(false)UserWait(2000) Tap(352,819,1000) Tap(357,952,200)
打印日志:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
C:\Users\XXXX>adb shell monkey -f/sdcard/login.txt -v 1 bash arg: -f bash arg: /sdcard/login.txt basharg: -v bash arg: 1args: [-f, /sdcard/login.txt, -v, 1] arg:"-f" arg:"/sdcard/login.txt" arg:"-v" arg:"1"data="/sdcard/login.txt":Monkey: seed=1615045206833
count=1:IncludeCategory:UNCHER:In cludeCategory:android.intent.category.MONKEYReplaying 0 events with speed 1.0:Switch:#Intent;action=android.intent.action.MAIN;category= UNCHER;launchFlags=0x10200000;co mponent=com.uzone.zztabc/io.dcloud.PandoraEntry;end // Allowing start of Intent { act=android.intent.action.MAINcat=[android.intent.category.L AUNCHER]
flg=0x10200000cmp=com.uzone.zztabc/io.dcloud.PandoraEntry } in package com.uzone.zztabc // Allowing start of Intent { act=android.intent.action.MAINcat=[android.intent.category.L AUNCHER]
flg=0x10200000cmp=com.uzone.zztabc/io.dcloud.PandoraEntry Activity (has extras) } in packagecom.uzone.zztabc //
activityResuming(com.uzone.zztabc):Sending Touch (ACTION_DOWN):0:(225.0,515.0):Sending Touch (ACTION_UP): 0:(225.0,515.0)// Shell command input text username statuswas 0:Sending Touch (ACTION_DOWN):0:(437.0,657.0):Sending Touch (ACTION_UP): 0:(437.0,657.0)// Shell command input text password statuswas 0:Sending Touch (ACTION_DOWN):0:(352.0,819.0):Sending Touch (ACTION_UP): 0:(352.0,819.0):Sending Touch (ACTION_DOWN):0:(357.0,952.0):Sending Touch (ACTION_UP): 0:(357.0,952.0)Events injected: 18:Sending rotation degree=0, persist=false:Dropped: keys=0 pointers=0 trackballs=0flips=0 rotations=0## Network stats: elapsed time=13884ms (0msmobile, 0ms wifi, 13884ms not connected)// Monkey finished
关于查看Launchable-Activity命令参数的补充命令:
•
aapt dump [参数] apk路径 | findstr launchable-activity
相关参数:Badging #打印APK标签和图标permissions #打印APK的权限resources #从APK打印资源表configurations #打印APK中的配置xmltree #打印给定资源中编译的XMLxmlstrings #打印已编译的XML的字符串。