如何解决monkey无法执行特定场景的问题:自定义脚本:以华为计算器为例。

闲话少说,先上源码:

type = raw events
count = 1
speed = 1.0

start data >>
#打开app的包名,启动的Activity
LaunchActivity(com.android.calculator2,com.android.calculator2.Calculator)
#休眠500ms
UserWait(500)
#点击计算机按钮1
Tap(105,989,1000)
UserWait(500)

#点击计算机按钮+号
Tap(635,850,1000)
UserWait(500)

#点击计算机按钮9
Tap(445,731,1000)
UserWait(500)

#点击计算机按钮=号
Tap(617,1071,1000)
UserWait(500)

执行结果截图:

如何解决monkey无法执行特定场景的问题:自定义脚本:以华为计算器为例。_第1张图片

首先说一下为什么要用到自定义脚本:

原因很简单,monkey测试是随机的,哪怕是我们尽可能的设置好参数,但是还是无法执行特定的测试场景,如果想让monkey测试某个特定的场景,一定要用到自定义脚本。

monkey的语法比较特别,跟shell类似,开头是特定的,并且monkey只能通过坐标的方式来定位点击和移动事件的屏幕位置

特定开头如下:

type = raw events    #脚本的类型
count = 1    #执行脚本次数
speed = 1.0    #执行脚本速率

start data >>   #开始monkey的命令

#利用monkey API编写的自定义流程

趟坑日记一:编写号的脚本必须放到手机上执行,否则会报错。

#脚本放到手机中:
adb push 电脑路径 手机路径
#脚本执行命令
adb shell -f 脚本路径 执行次数 (可以附加其他条件)

趟坑日记二:一定要加上执行次数,否则会报错:

最后附带monkey的常用API:

LaunchActivity(pkg_name,cl_name):启动应用的Activity,参数:包名和启动的应用的Activity

Tap(x,y,tapDuration):模拟一次手指点击事件,参数:x,y为控件的坐标,tapDuration为点击的持续时间

DispatchPress(keyName): 按键。 

RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。

DispatchFlip(true/false): 打开或者关闭软键盘。

LongPress(): 长按2秒。

PressAndHold(x, y, pressDuration): 模拟长按事件。

DispatchString(input): 输入字符串。

Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作。

PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。

UserWait(sleepTime): 休眠一段时间

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,自定义脚本,android)