Monkey命令如何用Processbat 获取命令输出输出内容

配置好android sdk环境变量之后,将android手机连接到电脑上,进行一些adb的简单命令的操作。
adb,安卓调试桥,android & sdk的一个工具。直接操作管理安卓模拟器或者真实的安卓设备。
借助adb工具,管理设备或手机模拟器的状态,进行很多手机操作,如安装软件、系统升级、运行shell命令等等。
其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。
常用命令:
1、adb &install & path(电脑sdk的命令目录)  install & apk
2、查看adb命令帮助信息:
&&&&& adb help
3、adb &uninstall & &package_name &  卸载apk
4、adb & device
5、adb & LogCat & &查看日志输出
6、adb &shell &pm & &查看adb &shell &pm的相关用法
7、adb &-s & devicename &序列号    
8、进入通过adb 连接上设备以后,通过如下命令查看:
    &cmd进入命令界面,输入adb &shell
    &然后输入pm list packages查看包名
&&  演示显示:
9、查看手机应用的包名
  输入命令adb &shell pm &list packages
10、查看包名对应的apk路径及名称
  adb shell pm list &packages &-f
&11、adb shell dumpsys  列出手机所有apk的详细信息
12. 获取模拟器中的文件:
&&&&& adb pull &remote& &local&
13. 向模拟器中写文件:
&&&&& adb push &local& &remote&
14. 进入模拟器的shell模式:
&&&&& adb shell
15. 启动SDK,文档,实例下载管理器:
&&&&& android
16. 缷载apk包:
&&&&& adb shell
&&&&& cd data/app
&&&&& rm apk包
&&&&& exit
&&&&& adb uninstall apk包的主包名
&&&&& adb install -r apk包
17. 查看adb命令帮助信息:
&&&&& adb help
18. 在命令行中查看LOG信息:
&&&&& adb logcat -s 标签名
19. adb shell后面跟的命令主要来自:
&&&&& 源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。
20. 删除系统应用:
&&&&& adb remount (重新挂载系统分区,使系统分区重新可写)。
&&&&& adb shell
&&&&& cd system/app
&&&&& rm *.apk
21. 获取管理员权限:
&&&&& adb root
22. 启动Activity:
&&&&& adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。
23、发布端口:
&&& 你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:&adb forward tcp:5555 tcp:8000
24、复制文件:
&&& 你可向一个设备或从一个设备中复制文件,&&&&& 复制一个文件或目录到设备或模拟器上:&& adb push &source& &destination&&/destination&&/source&&&&&&& 如:adb push test.txt /tmp/test.txt&&&&& 从设备或模拟器上复制一个文件或目录:&&&&& adb pull &source& &destination&&/destination&&/source&&&&&& 如:adb pull /addroid/lib/libwebcore.so .
25、搜索模拟器/设备的实例:
&&&& 取得当前运行的模拟器/设备的实例的列表及每个实例的状态:&&&& adb devices
26、查看bug报告:&adb bugreport&27、记录无线通讯日志:
&&& 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:&&&& adb shell&&&& logcat -b radio
28、获取设备的ID和序列号:
&&&& adb get-product&&&&& adb get-serialno
29、访问SQLite3
&&&& adb shell&&&&& sqlite3
#cd system/sd/data //进入系统内指定文件夹&#ls //列表显示当前文件夹内容&#rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件&#rm xxx //删除文件xxx&#rmdir xxx //删除xxx的文件夹
▲额外一些操作命令
  1. 查看设备
  adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
  2.安装软件
  adb install
adb install &apk文件路径& :这个命令将指定的apk文件安装到设备上
  3. 卸载软件
  adb uninstall &软件名&
  adb uninstall -k &软件名&
如果加 -k 参数,为卸载软件但是保留配置和缓存文件.
  4. 进入设备或模拟器的shell:
  adb shell
通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个&Shell中,你可以执行各种Linux的命令,另外如果只想执行一条shell命令,可以采用以下的方式:
  adb shell [command]
如:adb shell dmesg会打印出内核的调试信息。
  5. 发布端口
可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000
  6. 从电脑上发送文件到设备
  adb push &本地路径& &远程路径&
用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)
  7. 从设备上下载文件到电脑
  adb pull &远程路径& &本地路径&
用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑
  8、查看bug报告
adb bugreport
  9、记录无线通讯日志
一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
logcat -b radio
  10、获取设备的ID和序列号
adb get-product
adb get-serialno
简单了解adb命令后,先接触最简单的monkey测试。
monkey常用参数:
  &连接手机,控制台输入adb &shell
  &输入mongkey,会显示monkey命令的参数
    &用adb &shell &pm &list packages查看包名;
    &monkey常用参数
      -p&  指定包名(所有命令在此包内执行,如不指定则在整个系统内执行)
      -v  log详细程度(最高支持-v -v -v)
      -s  种子(指定种子后,同一个命令在任意时间地点的执行顺序都相同)
      --throttle  单步延时(每步操作间隔,单位毫秒)
      --kill-process-offer-error  出错时杀掉进程
      --ignore-timeouts  忽略超时错误
      --igore-security-exceptions  忽略许可错误
    示例:
     ▲指定包名为com.baidu.map.location,log详细程度最高,随即数种子为12,单步延时500ms,总执行1000步。
      在加了-s命令后,为保证后续同一条命令得出同样的结果,在执行命令前,设备的状态必须相同。
简单了解adb命令后,先接触最简单的monkey测试。
monkey常用参数:
  &连接手机,控制台输入adb &shell
  &输入mongkey,会显示monkey命令的参数
    &用adb &shell &pm &list packages查看包名;
    &monkey常用参数
      -p&  指定包名(所有命令在此包内执行,如不指定则在整个系统内执行)
      -v  log详细程度(最高支持-v -v -v)
      -s  种子(指定种子后,同一个命令在任意时间地点的执行顺序都相同)
      --throttle  单步延时(每步操作间隔,单位毫秒)
      --kill-process-offer-error  出错时杀掉进程
      --ignore-timeouts  忽略超时错误
      --igore-security-exceptions  忽略许可错误
    示例:
     ▲指定包名为com.baidu.map.location,log详细程度最高,随即数种子为12,单步延时500ms,总执行1000步。
      在加了-s命令后,为保证后续同一条命令得出同样的结果,在执行命令前,设备的状态必须相同。
阅读(...) 评论()后使用快捷导航没有帐号?
查看: 3146|回复: 6
monkey测试怎么把日志输出
各位大神,刚学monkey,想问一下大神们,怎么把monkey命令执行的日志打印出来呢?
例如命令:adb shell monkey -p com.XX -s 350 3500,执行完这个命令后,怎么把日志也打印出来,我写命令这样adb shell monkey -p com.XX -s 350 3500&log.txt ,可是日志打印不出来
adb shell monkey -p com.XX -s 350 3500&log.txt,这个命令进入当前cmd指向的那个文件路径下去查看有没有log.txt文件。。
有,但是没打印,查看驱动、端口等,设备能不能识别到。。
哈哈,希望有所帮助。。
可以写成一个自动批处理执行就可以抓log啦。BAT文件
可以查到日志文件,但打开文件是空的,怎么查驱动、端口呀。
请问楼上的,怎么写bat文件,不懂哦
首先,你电脑连接手机后,cmd里面输入adb devices,是否有设备显示出来
如果没有:
第一、我的电脑右击管理>设备管理器,如果有黄色图标的,就代表驱动还没有装好
第二、端口的话,你看下有没有安装那些第三方的手机&
可以查到日志文件,但打开文件是空的,怎么查驱动、端口呀。
请问楼上的,怎么写bat文件,不懂哦 ...
首先,你电脑连接手机后,cmd里面输入adb devices,是否有设备显示出来
如果没有:
第一、我的电脑右击管理&设备管理器,如果有黄色图标的,就代表驱动还没有装好
第二、端口的话,你看下有没有安装那些第三方的手机助手、手机管家之类的。然后在cmd里面输入:netstat -ano | findstr &5037&查看端口是否被占用,如果被占用了,就把对应的pid杀掉。。
参考文章:
你先看看驱动装好没吧。。先把手机设备显示出来
非常感谢。。。。。。。。。
有问题,就直接回复给金阳光老师
你这样直接写在帖子下面,他也没办法看到你是在回复他呀。。。&
非常感谢。。。。。。。。。
有问题,就直接回复给金阳光老师
你这样直接写在帖子下面,他也没办法看到你是在回复他呀。。。
o o o o o o第5章4节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 命令行参数解析(原创) - CSDN博客
第5章4节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 命令行参数解析(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文““。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。
设置好Monkey的CLASSPATH环境变量以指定”/system/framework /framework/monkey.jar“后,/system/bin/monkey这个shell脚本就会通过app_process命令指定monkey的入口类” “mands.monkey.Monkey”找到main函数开始运行。在运行之前会有一些初始化的工作需要做,其中很重要的一项就是去把用户提供的命令行选项以及参数值给解析出来。
这里只是以”monkey -port 12345”作为一个情景分析了monkey是如何进行命令行参数解析的,至于其他的参数解析原理是相同的,这里就不一一解析了,以下贴出monkey帮助命令打印出来的帮助文档,大家可以看下monkey都支持哪些命令行参数选项:
图5-4-1 monkey支持命令选项
其中 “–port”选项就是去指定monkey服务需要监听的端口,这样客户端就可以连接上来跟monkey服务进行通信了。
下面我们开始对Monkey应用的源代码进行分析,首先这里我们先进入到Monkey类的main函数:
代码5-4-1 Monkey - Main
* Command-line entry point.
* args The command-line arguments
public static void main(String[] args) {
Process.setArgV0("mands.monkey");
int resultCode = (new Monkey()).run(args);
System.exit(resultCode);
重点代码422行首先会去创建一个Monkey类的实例,然后调用run成员方法。这个成员方法比较长,做了很多事情,往下会慢慢为你一一道来。其中做的事情之一就是在开始时调用processOptions方法来解析命令行参数。
代码5-4-2 Monkey - run 初始化命令
* Run the command!
* args The command-line arguments
* Returns a posix-style result code. 0 for no error.
private int run(String[] args)
this.mArgs =
this.mNextArg = 0;
if (!processOptions()) {
return -1;
代码第450行之前做的都是一些成员变量初始化的动作,初始化后就会调用450行的processOptions进行真正的命令行参数解析并设置真正的来自命令行的成员变量。注意第444行会把来自命令行的参数数组赋给Monkey实例的mArgs成员变量保存起来,然后在445行把mNextArg这个游标设置成0,这个变量是用来遍历mArgs这个命令行参数数组的。
代码5-4-3 Monkey - processOptions
* Process the command-line options
* Returns true if options were parsed with no apparent errors.
private boolean processOptions() {
while ((opt = nextOption()) != null)
if (opt.equals("-s")) {
this.mSeed = nextOptionLong("Seed");
else if (opt.equals("--port")) {
this.mServerPort = ((int)nextOptionLong("Server\
port to listen on for commands"));
return true;
代码从645行开始到742行会执行一个while循环,每循环一次都会调用nextOption方法取一个命令行参数选项进来进行解析,与之对应的是取该命令行的参数值的方法nextOptionXXX等,其中XXX根据该参数值是长整型还是字串类型而不同:
nextOptionData方法:代表要获取的参数值是一个字串类型的值。比如”monkey -p com.android.sample.notepad”限定monkey可以操作的应用包范围中的应用包“com.android.sample.notepad”就是个字串类型
nextOptionLong方法: 代表要获得参数值是一个数字类型的值,比如”monkey –port 12345”中的12345。
例如713-714行就是去处理MonkeyRunner启动monkey的命令”monkey -port 12345”传过来的参数”-port 12345”的关键,它判断如果参数是”–port”的话,就会去取得紧跟着这个参数选项的参数值,也就是12345,然后把它保存到Monkey的成员变量mServerPort里面以供今后使用。注意这里的nextOptionLong方法的参数“Server port to listen on for commands”其实只是调试用途而已。
最后我们看下nextOption是如何从mArgs数组中根据当前mNextArg的数组游标来来获得下一个参数选项,以及与其对应的nextOptionLong是如何取得对应的下一个参数选贤的参数值的。我们先看nextOption:
代码5-4-4 Monkey - nextOption
private String nextOption() {
if (mNextArg &= mArgs.length) {
return null;
String arg = mArgs[mNextArg];
if (!arg.startsWith("-")) {
return null;
mNextArg++;
if (arg.equals("--")) {
return null;
if (arg.length() & 1 && arg.charAt(1) != '-') {
if (arg.length() & 2) {
mCurArgData = arg.substring(2);
return arg.substring(0, 2);
mCurArgData = null;
mCurArgData = null;
mArgs成员变量是一个String类型的数组,从本节上面的分析可以知道命令行传进来的参数列表是被保存在里面的。这段代码比较短也比较简单。分析之前我们先对monkey支持的命令行格式进行一些描述,这样大家就很容易看明白这些代码的意思了:
– : 代表停止往下处理选项
-z : 代表命令行选项”-z”
-z ARGS : 代表命令行选项”-z”且选项值是”ARGS”,比如”-s 100”的命令行参数选项是指定随即测试种子数的”-s”,值是种子数100
-zARGS : 同上,”-s 100”也可以写成”-s100”
–zz : 代表命令行选项“-zz”
–zz ARGS : 代表命令行选项”-zz”且选项值是”ARGS”
知道了monkey支持的命令行格式之后,还是有必要对nextOption方法用到的几个Monkey类的成员变量做一些解析:
mArgs: 保存的是用户传进来的命令行参数选项和值的一个数组
mNextArg: 相当于数组的一个游标,代表当前分析到第几个参数了
mCurArgData: 于某个参数选项对应的参数值
以下是这个方法的分析,大意就是从mArgs命令行参数数组中取得一个参数,然后经过一系列的判断是否合法,最后如果合法的话就直接返回。分析过程中大家需要注意的是,整个方法做的事情是取得参数选项,而不是取得参数值,所以不要被参数值ARGS给影响你的理解,该ARGS是由其他nextOptionXXX方法来获得的,比如下一个将要分析的去获得Long类型的参数值的方法nextOptionLong,而不是在这里。
行: 已经没有额外的参数需要处理,返回null代表无效
1121行: 根据当前游标获得需要分析的当前参数选项
行: 参数不是以”-”开始,返回null代表无效
1125行: 调整游标mNextArg,指向参数选项/参数值,具体是参数选项还是参数值要看该参数的编写方法是”-zARGS”的形式还是“-z ARGS”的形式。比如以”–port 12345 –wait-dbg”为例,如果当前需要分析的是”–port”,那么执行这一行后就会将游标指向”12345”这一个参数值了。在我们往下需要分析的nextOptionLong方法中就会根据这个mNextArg游标把该数值取出来,并把游标再指向下一行,也就是这里的”–wait-dbg”选项,这样在下一个netOption的调用中,1121行就能继续取出”–wait-dbg”这个当前选项进行新一轮的分析了
行: 如果是”–”,根据前面参数格式的描述,代表需要停止往下处理选项,返回null代表参数无效
行: 处理的是”-zARGS”这种情况,把命令行参数选项和参数值都同时解析出来了,参数值是保存在Monkey成员变量mCurArgData里面, 以便在processOption的while循环体中调用如nextOptionLong等方法时直接从Monkey的mCurArgData中获得命令行参数值
行: 处理的是”-z”和”-z ARGS”的情况,把参数值设置为null,以便在processOption的while循环体中调用如nextOptionLong等方法来决定是否需要解析获得参数值还是直接从mCurArgData中获得命令行参数值。最后在1135行把参数选项”-z”返回
行: 最后处理的是”-zz”和”-zz ARGS”选项,处理方法同上
还是以命令”monkey –port 12345”这个命令为例子。在通过nextOption方法获得对应的参数选项如”–port”之后,跟着需要做的就是去获得对应的“12345”这个参数选项值了。这里12345被认为是一个长整型的数值,所以调用的是nextOptionLong这个方法。
代码5-4-5 Monkey - nextOptionLong
* Returns a long converted from the next data argument, with error handling
* if not available.
* opt The name of the option.
* Returns a long converted from the argument.
private long nextOptionLong(final String opt) {
result = Long.parseLong(nextOptionData());
} catch (NumberFormatException e) {
System.err.println("** Error: " + opt + " is not a number");
重点在1167行,通过nextOptionData的调用获得字串类型的命令行参数值,然后通过Long的parseLong方法来将该字串转成长整型的目标值。
不知道大家在前面nextOption分析中有没有注意到一点,凡是参数选项和参数值合并在一起的情况(比如-zARGS),该方法都会在获得需要的参数选项(比如-z)的同时,把参数值(ARGS)也一并分析出来并保存在本Monkey类的成员变量mCurArgData成员变量里面;而凡是参数选项和参数值分开的情况(比如-z ARGS),该nextOption方法都只是把参数选项给分析出来,而把mCurArgData设置成null。其实下面我们要分析的nextOptionData就是要根据这两种情况来获得对应的参数选项的参数值的。
代码5-4-6 Monkey - nextOptionData
* Return the next data associated with the current option.
* Returns the data string, or null of there are no more arguments.
private String nextOptionData() {
if (mCurArgData != null) {
return mCurArgD
if (mNextArg &= mArgs.length) {
return null;
String data = mArgs[mNextArg];
mNextArg++;
该方法所做的事情主要就是如前所说的根据mCurArgData这个用来保存参数值的成员变量是否为null(也就是说在之前的nextOption获取参数选项的方法中是否已经顺便把参数值一并获取了)而分不同的方法来获得参数选项对应的参数值:
行:先去看看mCurArgData这个变量在nextOption中有没有被设置成真实的参数值,也就是说在1147行检查下mCurArgData是否为null,如果不是的话代表在nextOption分析参数选项的时候已经把参数值也一并分析出来了,所以这里只需要直接返回这个值就行了。
1153行:如果mCurArgData为null的话代表对应参数选项的参数值还没有解析出来,那么就直接使用上面nextOption已经调整好的游标mNextArg来从命令行参数数组mArgs中取得对应的参数值,然后返回给调用者。
1154行:调整游标到指向下一个参数选项,以便在下一个nextOption中获取参数选项列表mArgs中的下一个选项进行分析。还是以前面的”monkey –port 12345 –wait-dbg”为例,前面的nextOption获取到了”–port”这个参数选项,而这里的nextOptionData是把对应的参数值”12345“解析出来,然后就会通过1154这一行代码把游标指向”–wait-dbg”这个选项。
1155行:把参数值返回给调用者。在上面的例子中就是把“12345”这个监听端口返回给本小节开始前分析的processOption这个方法,然后在把该端口保存到mServerPort这个成员变量里面,具体代码请查看前面该方法的714行代码的分析。
——— 未完待续———
作者:天地会珠海分舵
微信公众号:TechGoGoGo
本文已收录于以下专栏:
相关文章推荐
事件源代表要注入系统的命令事件数据是从哪里过来的。这一小节我们不会对事件源的实现进行深入的分析,因为下一章会做这个事情。这里大家对事件源有个基本概念就足够了。...
上一节我们描述了monkey的命令处理入口函数run是如何调用optionProcess方法来解析命令行参数的。启动参数主要时去指导Monkey时怎么运行起来的,但Monkey作为MonkeyRunn...
本节我们先看下Monkey是怎么启动起来的。在今后分析到MonkeyRunner的原理的时候我们会看到客户端是通过ADB往Android目标测试机器发送一个”monkey -port 12345”的命...
每个应用都会有一个入口方法来供操作系统调用执行,Monkey这个应用的入口方法就是在Monkey.java这个类里面的,也就是说Monkey.java就是整个Monkey应用的入口类。...
从前面几个小节我们知道ADB命令行客户端是存在与主机端的一个命令,用户可以使用该命令来发送服务请求到ADB服务器,ADB服务器再判断该服务请求是主机服务请求还是本地服务请求来决定是否应该将请求传送给远...
在第2节中我们看到了MonkeySourceNetwork是如何从Socket中获取MonkeyRunner发送过来的命令字串的,但是最后如何将它翻译成事件的代码我们还没有进行分析,因为在那之前我们还...
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需...
Monkey源码详细讲解,程序入口以及初始化命令行参数部分。
大家可能会觉得奇怪,为什么启动目标设备端的monkey进程会放在“运行测试脚本”这一节之后来阐述。 纵观前面整个MonkeyRunner的启动流程,我们看到并没有提及到monkey进程启动的地方。那么...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)&nbsp&#8250&nbsp&nbsp&#8250&nbsp
Android命令Monkey压力测试详解
shell, monkey, system, Android, 文件系统Monkey, 示例, 简介一、Monkey测试简介Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。二、Monkey程序介绍1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;这样就可以通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。 &三、Monkey命令的简单帮助要获取Monkey命令自带的简单帮助,在CMD中执行命令: adb shell monkey Chelp四、Monkey命令参数介绍1) 参数: &-p参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。* 指定一个包: adb shell monkey -p com.htc.Weather 100说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。* 指定多个包:adb shell monkey -p com.htc.Weather Cp com.htc.pdfreader &-p com.htc.photo.widgets 100* 不指定包:adb shell monkey 100 说明:Monkey随机启动APP并发送100个随机事件。* 要查看设备中所有的包,在CMD窗口中执行以下命令: &adb shell &#cddata/data &#ls2) 参数: &-v用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:日志级别 Level0 &示例 adb shellmonkey -p com.htc.Weather Cv 100说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息日志级别 Level 1示例 adb shellmonkey -p com.htc.Weather Cv -v 100说明 &提供较为详细的日志,包括每个发送到Activity的事件信息 日志级别 Level 2示例 adb shellmonkey -p com.htc.Weather Cv -v Cv 100说明 &最详细的日志,包括了测试中选中/未选中的Activity信息3)参数: &-s用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。* 示例: Monkey测试1:adb shell monkey -p com.htc.Weather Cs 10 100 &Monkey 测试2:adb shell monkey -p com.htc.WeatherCs 10 100 & 两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽 & 然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;4) 参数: &--throttle &毫秒&用于指定用户操作(即事件)间的时延,单位是毫秒;* 示例:adb shell monkey -p com.htc.Weather Cthrottle 5) 参数: &--ignore-crashes用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。* 示例1:adb shellmonkey -p com.htc.Weather --ignore-crashes 1000 &测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;* 示例2:adb shellmonkey -p com.htc.Weather 1000 &测试过程中,如果Weather程序崩溃,Monkey将会停止运行。6) 参数: &--ignore-timeouts用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。7) 参数: &--ignore-security-exceptions用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。8) 参数: &--kill-process-after-error用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。9) 参数: &--monitor-native-crashes用于指定是否监视并报告应用程序发生崩溃的本地代码。10) 参数: &--pct-{+事件类别}{+事件类别百分比}用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)参数:使用说明:示例:--pct-touch {+百分比}调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)adb shell monkey -p com.htc.Weather--pct-touch 10 1000--pct-motion {+百分比}调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)adb shell monkey -p com.htc.Weather --pct-motion 20 1000--pct-trackball {+百分比}调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)adb shell monkey -p com.htc.Weather--pct-trackball 30 1000--pct-nav {+百分比}调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)adb shell monkey -p com.htc.Weather--pct-nav 40 1000--pct-majornav {+百分比}调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)adb shell monkey -p com.htc.Weather--pct-majornav 50 1000--pct-syskeys {+百分比}调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)adb shell monkey -p com.htc.Weather--pct-syskeys 60 1000--pct-appswitch {+百分比}调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法adb shell monkey -p com.htc.Weather--pct-appswitch 70 1000--pct-anyevent {+百分比}调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等adb shell monkey -p com.htc.Weather--pct -anyevent 100 1000* 指定多个类型事件的百分比: adb shell monkey -p com.htc.Weather--pct-anyevent 50 --pct-appswitch 50 1000注意:各事件类型的百分比总数不能超过100%;
上一篇: GridView和ListView的唯一不同是他不能像ListView 那样添加header,因为他没有addHeaderView方法,不过有时我们的确需要一个带有header的GridView。 不过google已经为我们解决了这个问题,在原生系统的Gallery2应用中google自己写了一个HeaderGridView的类,
下一篇: 这个异常的出现往往是因为非法使用了某些方法引起的。 从字面意思上是说这个特定的 child 已经有一个 parent 了,你必须在这个 parent 中首先调用 removeView() 方法,才能继续你的内容。这里很明显这个 child 是一个 View ,一个子( child ) View 必须依

我要回帖

更多关于 linux 获取命令行输出 的文章

 

随机推荐