monkey 命令
monkey不单只能做稳定性测试,还可以用来进行自动化测试,不过,因其提供的命令比较少,而且是通过屏幕分辨率进行定位元素,所以,monkey编写的自动化测试脚本的兼容性不是很好,也就是说,如果在同一个屏幕分辨率下,可以正常运行。
但是,如果换一个分辨率的设备,有可能导致定位不到之前的元素,因为,坐标位置发生了改变。下面是一下,monkey做自动化测试脚本开发时要用到的常用命令:
DispatchPointer 命令
该命令用于向一个坐标点(x坐标,y坐标)发送手势消息
命令格式:DispatchPointer(long downTime,long eventTime, int action ,float x, float y ,float pressure ,float size , int metaState,float xPrecision, float yPrecision, int device, int edgeFlags);
参数介绍:
downTime:表示键最初被按下的时间
eventTime:表示事件发生的时间
action:表示发送消息的类型;0(按下),1(抬起),2(移动)
x:表示x坐标轴
y:表示y坐标轴
pressure:表示当前事件的压力,0(根本没有压力),1(正常压力)
size:表示触摸的近似值,范围0~1.
metaState:表示当前按下的meta键的标识,meta键指的是ALT, SHIFT, CAPS_LOCK
xPrecision:表示X坐标精确值
yPrecision:表示y坐标精确值
device:表示事件来源
edgeFlags:表示边缘的指示,如果有的话,在该位置触发位移事件
通常,我们只需要设置前5个关键参数,其他的几个参数可以设置为0.
格式:
DispatchPointer(0,0,0,x,y,0,0,0,0,0,0,0) 按下操作,坐标点(x,y)
DispatchPointer(0,0,1,x,y,0,0,0,0,0,0,0) 抬起操作,坐标点(x,y)
DispatchPointer(0,0,2,x,y,0,0,0,0,0,0,0) 移动操作,坐标点(x,y)
例子:
DispatchPointer(0,0,0,100,236,0,0,0,0,0,0,0)
DispatchPointer(0,0,2,100,685,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,100,685,0,0,0,0,0,0,0)
表示按下坐标(100,236)移动到坐标(100,685)然后抬起操作
DispatchTrackball命令
该命令用于向一个坐标点发送跟踪消息
命令格式:DispatchTrackball(long downTime,long eventTime,iint action,float x,float y,float presure,float size,int metaState ,float xPrecision ,float yPrecision, int device,int edgeFlags)
该命令的使用和参数运用于DispatchPointer是一样
DispatchKey 命令
该命令用于发送按键消息给指定的设备或者模拟器
命令格式:DispatchKey(long downTime, long eventTime, int action,int code,int repeat, int metaState,int device,int scancode)
DispatchKey(0,0,0,29,0,0,0,0)
DispatchKey(0,0,1,29,0,0,0,0)
code值为29,表示“KEYCODE_a”,意思是按下a键,然后抬起,也就是:输入字母a,也可以换种方法写:
DispatchPress(KEYCODE_a) 这两个的效果是一样的
DispatchFlip命令
该命令用于打开或关闭软盘
命令格式:DispatchFlip(booleam keyboardOpen)
当keyboardOpen的指为true时,表示打开软盘,为false时,表示为关闭软盘
LaunchActivity命令
该命令用于启动任意引用的一个活动界面
命令格式:LaunchActivity(String pkg_name , String cl_name)
参数介绍:
pkg_name:是要启动的应用包名
cl_name:是要启动的活动名称
LaunchActivity(com.test.app,com.test.swh.activity.WelcomeActivity)
表示启动com.test.app包中的com.pttz.swh.activity.WelcomeActivity应用活动
LaunchInstrumentation 命令
该命令用于运行一个仪表盘测试用例
命令格式:LaunchInstrumentation(test_name,runner_name)
参数介绍:test_name为要运行的测试用例名称,runner_name为运行测试用例的类名
UserWait 命令
该命令用于让脚步等待一段时间
命令格式:UserWait(long sleeping)
sleeping单位为毫秒
UserWait(5000)表示等待5秒
RunCmd 命令
该命令用于在设备上运行shell命令
命令格式:RunCmd(cmd)
参数介绍:cmd为要执行的shell命令
Tap 命令
该命令用于模拟一次手指单击事件
命令格式:Tap(x,y,tapDuration)
参数介绍:x,y为坐标的横纵坐标值,tapDuration为可选项,表示单击的持续时间
ProfileWait 命令
该命令用于等待5秒钟
命令格式:ProfileWait()
DeviceWakeUp 命令
该命令用于唤醒设备并解锁
命令格式:DeviceWakeUp()
DispatchString 命令
该命令用于向shell输入一个字符串
命令格式:DispatchString(input)
参数介绍:input为要输入的字符串内容
DispatchString(hello)
示例脚本:
type=raw events
count=100
speed=1.0
start data >>
LaunchActivity(com.test.aqb,com.test.swh.activity.WelcomeActivity)
UserWait(3000)
//启动app后等待3秒
DispatchPointer(0,0,0,30,1050,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,30,1050,0,0,0,0,0,0,0)
//点击输入框
DispatchPress(KEYCODE_h)
DispatchPress(KEYCODE_o)
DispatchPress(KEYCODE_l)
DispatchPress(KEYCODE_l)
DispatchPress(KEYCODE_e)
//输入hello内容
... ...