App移动端测试【10】Monkey自定义脚本案例
Monkey自定义脚本案例:QQ的操作
1. Monkey API
- LaunchActivity(pkg_name, cl_name) 启动应用的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) 打开或者关闭软键盘。
- Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作。
- PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。
- LongPress(): 长按2秒。
- 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) 结束获取帧率。
2.获取元素的位置
X,Y的值。通过模拟器手机,【开发者选项】->【显示指针位置】,打开【显示指针位置】,然后在屏幕上点击某个元素,在屏幕的顶部可以看到元素的X,Y值。
3. Monkey自定义脚本编写
3.1 案例讲解
启动移动端qq、然后进行登录(输入用户名、密码)。
考虑:
- 知道qq的包与lanchable-activity的名字
- 要操作用户名、密码,要知道具体的元素
- 操作步骤需要组织(脚本)
3.2 脚本的设计
确定被测应用的包名与launchable-activity
##方式1:
C:\Users\Leo>aapt dump badging C:\Users\Leo\Desktop\mobileqq_android.apk
package: name='com.tencent.mobileqq' versionCode='1010' versionName='7.9.9'
launchable-activity: name='com.tencent.mobileqq.activity.SplashActivity'
##方式2:
C:\Users\Leo>aapt dump badging C:\Users\Leo\Desktop\mobileqq_android.apk | find "launchable-activity"
launchable-activity: name='com.tencent.mobileqq.activity.SplashActivity' label='QQ' icon=''
C:\Users\Leo>aapt dump badging C:\Users\Leo\Desktop\mobileqq_android.apk | find "pack"
package: name='com.tencent.mobileqq' versionCode='1010' versionName='7.9.9'
##方式3:
C:\Users\Leo>aapt dump badging C:\Users\Leo\Desktop\mobileqq_android.apk | findstr package
package: name='com.tencent.mobileqq' versionCode='1010' versionName='7.9.9'
C:\Users\Leo>aapt dump badging C:\Users\Leo\Desktop\mobileqq_android.apk | findstr launchable-activity
launchable-activity: name='com.tencent.mobileqq.activity.SplashActivity' label='QQ' icon=''
编写脚本(脚本的文件格式随意,后缀名随意txt)
#头文件
type = raw events
count = 1
speed = 1.0
#启动qq,并测试
start data >>
LaunchActivity(com.tencent.mobileqq,com.tencent.mobileqq.activity.SplashActivity)
UserWait(10000)
Tap(134,891,1000) #点击登录
UserWait(5000)
Tap(96,198,1000) #点击账号文本框
UserWait(3000)
Tap(189,164,1000) #点击账号文本框,变化后的位置,
UserWait(3000)
DispatchString(3298373768)
UserWait(3000)
Tap(134,210,1000) #点击密码文本框
UserWait(5000)
DispatchString(ABCD12345)
UserWait(5000)
Tap(276,274,1000)
执行脚本
C:\Users\Leo>adb connect 127.0.0.1:62001
already connected to 127.0.0.1:62001
C:\Users\Leo>adb push C:\Users\Leo\Desktop\ScriptQq.txt /sdcard
C:\Users\Leo\Desktop\ScriptQq.txt: 1 fi... pushed. 0.0 MB/s (519 bytes in 0.070s)
C:\Users\Leo>adb shell monkey -f /sdcard/ScriptQq.txt -v 1
结果
测试精讲视频
如果你觉的文章读的不过瘾,可以查看详细的视频教程。
《移动测试必备技能》
UI自动化测试:Selenium3自动化测试
【测试全系列视频课程】
学习路线如下