通过脚本实现指定的Monkey操作
2014-02-28 10:00
363 查看
虽然说我们知道Monkey是monkey.jar相手机发送伪随机事件流,但是通过对monkey的API研究发现,我们可以通过-f这个参数来实现monkey执行脚本。
在monkey的源码中我们可以看到以下例子:
/**
* monkey event queue. It takes a script to produce events
*
* sample script format:
* type= raw events
* count= 10
* speed= 1.0
* start data >>
* captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,
* 0.06666667,0,0.0,0.0,65539,0)
* captureDispatchKey(5113146,5113146,0,20,0,0,0,0)
* captureDispatchFlip(true)
* ...
*/
由此可知,我们可以通过编写script来实现使用monkey进行指定操作。
首先,我们需要获取被测程序的包名和lanch activity。
然后我们需要编写一个script脚本,具体如下:
type= point
count= 4
speed= 1.0
start data >>
LaunchActivity(com.jason.test,com.jason.test.MainActivity)
captureDispatchPointer(0,0,0,524,390,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,524,390,0,0,0,0,0,0,0);
UserWait(300);
captureDispatchPointer(0,0,0,231,648,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,231,648,0,0,0,0,0,0,0);
UserWait(300);
captureDispatchPointer(0,0,0,698,231,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,698,231,0,0,0,0,0,0,0);
UserWait(300);
captureDispatchPointer(0,0,0,100,200,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,100,200,0,0,0,0,0,0,0);
此例仅用了点击事件,API中还有其他比较常用的事件,如:DispatchKey(按手机硬件)、DispatchTrakball(轨迹球)等。
上例中有几个重要参数需要解释一下:
DispatchPointer(downTime, eventTime,action, x, y, pressure, size, metaState, xPrecision, yPrecision,device, edgeFlags);
其中action=0时为按下,action=1时为移动,action=2时为抬起,action=3时为取消。x、y为坐标点。pressure为压力值类型为float,size为点击范围大小类型为float。device为deviceID。
其他的参数仍然在研究中。
写好以上脚本后,将脚本放置到/sdcard/monkey.script
然后输入命令:
adb shell monkey
-f /sdcard/monkey.script -v 1
其中1为执行脚本次数。
在monkey的源码中我们可以看到以下例子:
/**
* monkey event queue. It takes a script to produce events
*
* sample script format:
* type= raw events
* count= 10
* speed= 1.0
* start data >>
* captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,
* 0.06666667,0,0.0,0.0,65539,0)
* captureDispatchKey(5113146,5113146,0,20,0,0,0,0)
* captureDispatchFlip(true)
* ...
*/
由此可知,我们可以通过编写script来实现使用monkey进行指定操作。
首先,我们需要获取被测程序的包名和lanch activity。
然后我们需要编写一个script脚本,具体如下:
type= point
count= 4
speed= 1.0
start data >>
LaunchActivity(com.jason.test,com.jason.test.MainActivity)
captureDispatchPointer(0,0,0,524,390,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,524,390,0,0,0,0,0,0,0);
UserWait(300);
captureDispatchPointer(0,0,0,231,648,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,231,648,0,0,0,0,0,0,0);
UserWait(300);
captureDispatchPointer(0,0,0,698,231,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,698,231,0,0,0,0,0,0,0);
UserWait(300);
captureDispatchPointer(0,0,0,100,200,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,100,200,0,0,0,0,0,0,0);
此例仅用了点击事件,API中还有其他比较常用的事件,如:DispatchKey(按手机硬件)、DispatchTrakball(轨迹球)等。
上例中有几个重要参数需要解释一下:
DispatchPointer(downTime, eventTime,action, x, y, pressure, size, metaState, xPrecision, yPrecision,device, edgeFlags);
其中action=0时为按下,action=1时为移动,action=2时为抬起,action=3时为取消。x、y为坐标点。pressure为压力值类型为float,size为点击范围大小类型为float。device为deviceID。
其他的参数仍然在研究中。
写好以上脚本后,将脚本放置到/sdcard/monkey.script
然后输入命令:
adb shell monkey
-f /sdcard/monkey.script -v 1
其中1为执行脚本次数。
相关文章推荐
- 【qtp脚本】实现自动创建目录并通过测试写字板生成指定个数的文件
- linux:通过bash和存储过程实现数据库操作(分享一段脚本)
- 在操作系统级通过脚本实现数据库操作
- monkey脚本实现有序用户操作流
- C#下通过LINQ实现对XML文档指定节点的删除操作
- 通过脚本实现操作的自动化
- shell脚本之通过发送带\n字符串或expect脚本实现交互输入自动化
- Spring bean通过实现InitializingBean ,DisposableBean接口实现初始化方法和销毁前操作
- 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 通过操作指针,与指针做函数参数'实现字串在主串中出现的次数,然后将出现的部分按照要求进行替换
- Linux通过脚本实现远程自动备份
- 通过JSCH 实现FTP各种操作
- Oracle中通过substr和instr实现截取指定字符之间的字符串:
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份
- filter实现过滤压缩指定的请求的操作
- [2.2]Spark DataFrame操作(二)之通过反射实现RDD与DataFrame的转换
- 通过javabean轻松实现对数据库的各种操作
- 通过ANT实现jmeter批量执行脚本、生成报告、发送邮件全套build.xml文件