zoukankan      html  css  js  c++  java
  • monkey

    Monkey途径:用户主要是通过adb命令来启动Monkey的,

    • Monkey启动步骤
    1. 连接移动设备:adb connect 127.0.0.1:62001
    2. 连接成功后输入命令adb shell
    3. 进入到指定目录cd /system/bin
    4. 输入 monkey命令看到如下提示则说明启动成功。

    usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]

                  [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]

                  [--ignore-crashes] [--ignore-timeouts]

                  [--ignore-security-exceptions]

                  [--monitor-native-crashes] [--ignore-native-crashes]

                  [--kill-process-after-error] [--hprof]

                  [--pct-touch PERCENT] [--pct-motion PERCENT]

                  [--pct-trackball PERCENT] [--pct-syskeys PERCENT]

                  [--pct-nav PERCENT] [--pct-majornav PERCENT]

                  [--pct-appswitch PERCENT] [--pct-flip PERCENT]

                  [--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]

                  [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]

                  [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]

                  [--wait-dbg] [--dbg-no-events]

                  [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]

                  [--port port]

                  [-s SEED] [-v [-v] ...]

                  [--throttle MILLISEC] [--randomize-throttle]

                  [--profile-wait MILLISEC]

                  [--device-sleep-time MILLISEC]

                  [--randomize-script]

                  [--script-log]

                  [--bugreport]

                  [--periodic-bugreport]

                  COUNT

    • II 强制关闭monkey
    1. adb shell ps 查看全部在运行的进程
    2. 查找出com.android.commands.monkey 进程PID
    3. adb shell kill pid 杀掉monkey进程
    III monkey 命令

    monkey命令格式如下:

    $ adb shell monkey [options] <event-count>

    • [options] 是指monkey可传入的参数,是可选项(如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包)
    • <event-count> 是指随机发送事件数。如:输入100就是执行100个伪随机事件,为必选项。
    IV Monkey参数:

    1) 参数:-p

    参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定

    包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP

    * 指定一个包 adb shell monkey -p com.example.sellclientapp  100

    说明:com.example.sellClientAPP 为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

    * 指定多个包adb shell monkey -p com.htc.Weather –p com.htc.pdfreader  -p com.htc.photo.widgets 100

    * 不指定包adb shell monkey 100

     说明:Monkey随机启动APP并发送100个随机事件。

    * 要查看设备中所有的包,在CMD窗口中执行以下命令

      >adb shell

      #cd data/data

      #ls

    2) 参数:-v用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别

    日志级别 Level 0 

    示例 adb shell monkey -p com.htc.Weather –v 100

    说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

    日志级别 Level 1

    示例 adb shell monkey -p com.htc.Weather –v -v 100

    说明  提供较为详细的日志,包括每个发送到Activity的事件信息

     

    日志级别 Level 2

    示例 adb shell monkey -p com.htc.Weather –v -v –v 100

    说明  最详细的日志,包括了测试中选中/未选中的Activity信息

     

    3) 参数:-s用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

    * 示例:

    Monkey测试1adb shell monkey -p com.htc.Weather –s 10 100

    Monkey 测试2adb shell monkey -p com.htc.Weather –s 10 100

       两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组 成的一系列操作,即一个序列)是一样的。操作序

    列虽   然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的

     

    Monkey自定义脚本实践
    VI Monkey脚本API简介
    1.1.1.1.1.1 Monkey脚本字典:

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

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

    UserWait(sleepTime): 休眠一段时间

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

    DispatchString(input): 输入字符串。

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

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

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

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

    LongPress(): 长按2秒。

    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): 结束获取帧率。

    1.1.1.1.1.1 步骤:

    1、 新建txt文件

    2、 编写脚本(包名和activity名在aapt中获取)

    Type = raw events

    Count = 1

    Speed = 1.0

    Start data >>

    LaunchActivity(package名,Activity)

    UserWait(2000)

     

    Tap(623,892,1000)

    UserWait(2000)

     

    Tap(811,62,1000)

    UserWait(2000)

     

    Tap(173,384,1000)

    DispathString(zxw1234)

    UserWait(1000)

     

    Tap(199,3475,1000)

    DispathString(zxw123456)

    UserWait(1000)

     

    Tap(376,621,1000)

    UserWait(2000)

     

    3、 执行脚本

    命令:adb push 脚本文件路径 /sdcard存入手机

          Adb shell monkey –f /sdcard/kyb.txt –v –v 1

    VII Monkey日志:
    1.1.1.1.1.1 保存在PC

    >adb shell monkey [option] <count> >d:monkey.txt

     

    eg

    C:UsersShuqing>adb shell monkey -v -v 100 >d:monkeylog.txt

    1.1.1.1.1.1 保存在手机上

    C:UsersShuqing>adb shell

    monkey -v 100 >/sdcard/monkeylog.log

    注意:不能写成C:UsersShuqing>adb shell monkey -f /sdcard/kyb.txt -v 1 > /mnt/sdcard/monkey.log 否则会报错“系统找不到指定的路径”。

    1.1.1.1.1.1 标准流和错误流分开保存

    ·标准流与错误流分开保存,代码如下:

    Monkey [option] <count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt

     

    C:UsersShuqing>adb shell monkey -v 100 1>d:monkey.log  2>d:error.log

    执行以上命令,Monkey的运行日志和异常日志将被分开保存。此时Monkey的运行日志将被保存在monkey.txt文件中,而异常日志将被保存在D盘下的error.txt中。

  • 相关阅读:
    Qt 读写XML文件
    用 Qt 中的 QDomDocument类 处理 XML 文件(上)
    Qss
    QTableWidget的使用和美工总结
    用 Qt 中的 QDomDocument类 处理 XML 文件(下)
    ArcEngine中最短路径的实现
    AE中网络分析的实现 的各个类之间的关系
    AE控制图层中要素可见状态的几种方法
    如何使用Name对象,包括WorkspaceNames和DatasetNames
    AE属性表操作
  • 原文地址:https://www.cnblogs.com/uni5/p/11830963.html
Copyright © 2011-2022 走看看