Android测试之Monkey Script
什么是Monkey Script Monkey Script是用来使Monkey执行特定操作的命令集合。 为什么要用MonkeyScript 由于Monkey的执行是随机的不能满足特定的需求,因此我们需要Monkey Script来使Monkey执行我们需要的特定操作。 如何使用Monkey Script 步骤一:编写脚本(test.txt) type=user #指明脚本类型 count=10 #脚本执行次数 speed=1.0 #命令执行速率 start data >> #用户脚本入口,下面是用户自己编写的脚本 # 上面是固定的格式头 # 启动Activity LaunchActivity(com.itfitness.monkeytest,com.itfitness.monkeytest.MainActivity) # 等待2秒 UserWait(2000) # 某一坐标点按下 DispatchPointer(10,10,0,200,100,1,1,-1,1,1,0,0) # 某一坐标点抬起 DispatchPointer(10,10,1,200,100,1,1,-1,1,1,0,0) # 以上按下抬起共同模拟屏幕点击 UserWait(1000) # 输入test DispatchString(test) UserWait(1000) DispatchPointer(10,10,0,200,150,1,1,-1,1,1,0,0) DispatchPointer(10,10,1,200,150,1,1,-1,1,1,0,0) UserWait(1000) 需要注意的是LaunchActivity()命令启动的Activity需要在AndroidManifest文件中中配置Activity的exported属性为true。 <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 步骤二:将脚本导入手机内 adb命令 adb push test.txt data/local/tmp 步骤三:查看是否导入了手机内(这里我们可以看到有test.txt说明已经导入手机了) 步骤四:安装Apk adb install apk名.apk 步骤五:执行脚本 # monkey -f 脚本文件名 次数 monkey -f test.txt 100 补充:Monkeyscript API介绍 ●单击事件:DispatchPointer(downTime,eventTime,action,x,y,pressure,size,metaStat,xPrecision,yPrecision,device,edgeFlags) 这里我们只需要了解action、x、y即可 action:0表示按下,1表示抬起 x:这个事件的X坐标。 y:这个事件的Y坐标。 示例: DispatchPointer(10,10,0,200,150,1,1,-1,1,1,0,0) //按下 DispatchPointer(10,10,1,200,150,1,1,-1,1,1,0,0) //抬起 这里的x、y坐标可以通过Android sdk中自带的uiautomatorviewer工具来获取(uiautomatorviewer工具的使用) ●拖动:Drag(x1,y1,x2,y2,stepCount) 示例: Drag(300,500,300,300,15) //快速下滑 Drag(300,300,300,500,15) //快速上滑 ●双指缩放:PinchZoom(xstart1,ystart1,xstart2,ystart2,xend2,yend2,xend1,yend1,step) 示例: PinchZoom(400,400,200,300,550,550,700,700,3) //放大 ●执行shell命令:RunCmd(cmd) 示例: RunCmd(monkey -v 1000) ●发送tap事件(一个touchdown和touch up事件),时间长可以模拟长按,时间单位为ms Tap(x,y,tapDuration) ●启动唤醒设备:DeviceWakeUp() ●获取最后一个touch时间的点做长按:LongPress() ●按住duration时长:PressAndHold(x,y,duration) ●屏幕旋转:RotateScreen(rotationDegree,persist),rotationDegree只能支持0,90,180,270, persist 0/1 ● 对指定keycode模拟press事件:DispatchPress(KeyCode) KeyCode对照表 个人博客:https://myml666.github.io