Android monkey详解

一、初始monkey
小米手机root遇到的问题,1,miui9的稳定版无法root,必须先把版本换成开发版,再进行root,采用小米自带的安全中心的root方式,root的过程中,会更新手机权限什么的,完成之后,可以通过su获取root权限,但跑monkey的时候还是出错了,会卡在一个屏幕不动。
使用kingroot进行手机root,跑到一半就root失败,很尴尬。
重启手机,发现被Kingroot执行root成功了。
**1、**monkey包含的命令参数如下

C:\MyProject\SVNProject>adb shell monkey --help
** Error: Unknown option: --help
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

**2、**monkey执行成功的标志

## Network stats: elapsed time=135ms (0ms mobile, 0ms wifi, 135ms not connected)
// Monkey finished

time=135ms表示执行时间为0.135s。
二、指令解释:
3、–pct-touch :percent为100的时候表示全部都是点击事件

C:\MyProject\SVNProject>adb shell monkey -p  com.miui.calculator  --pct-touch 100 -vvvv 10
:Monkey: seed=1522754034173 count=10
:AllowPackage: com.miui.calculator
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// Event percentages:
//   0: 100.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.miui.calculator/.cal.CalculatorActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.miui.calculator/.cal.CalculatorActivity } in package com.miui.calculator
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.miui.calculator/.cal.CalculatorActivity } in package com.miui.calculator
:Sending Touch (ACTION_DOWN): 0:(546.0,302.0)
:Sending Touch (ACTION_UP): 0:(550.3135,293.37067)
:Sending Touch (ACTION_DOWN): 0:(554.0,1620.0)
:Sending Touch (ACTION_UP): 0:(553.01154,1619.8733)
:Sending Touch (ACTION_DOWN): 0:(742.0,1532.0)
:Sending Touch (ACTION_UP): 0:(741.75793,1541.677)
:Sending Touch (ACTION_DOWN): 0:(929.0,364.0)
:Sending Touch (ACTION_UP): 0:(928.0578,356.02808)
:Sending Touch (ACTION_DOWN): 0:(176.0,1609.0)
Events injected: 10
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=135ms (0ms mobile, 0ms wifi, 135ms not connected)
// Monkey finished

如果我只想要点击事件则用 –pct-touch 100
4、如果遇到崩溃,monkey就会停止运行,
如下两种指令可以让monkey忽略异常
[–ignore-crashes] [–ignore-timeouts]

adb shell monkey -p  com.miui.calculator --ignore-crashes --pct-touch 100 -vvvv 10

5、carsh结果提取

adb shell monkey -p com.test.hzx.testapplication --ignore-crashes -v 100 > 
C:\Users\Hzx\Desktop\Document\result2.txt

这条命令是表示,如果发生异常,可以把异常保存到电脑里。错误日志会以carsh开始
6、ANR结果提取
与carsh类似,错误日志以ANR开始
三、monkeyscript
adb shell monkey -f
1、DispatchTrackball

DispatchTrackball(long downtime, long eventide, int action, float x, float y, float pressure, 
float size, int metastate, float xprecision, float yprecision, int device, int edgeflags)
action: 0-按下,1-弹起

2、DispatchPointer:点击事件
3、DispatchString命令
DispatchString(strings)
4、LaunchActivity命令
LaunchActivity(package, activity)
5、UserWait命令等待事件
UserWait(1000)
6、DispatchPress 按下键值
DispatchPress(int keycode) #keycode 66 回车键
7、monkeyscript实例
demo.script

typ=user
count=10
speed=1.0
start data >>

LaunchActivity(com.your.package,your.package.name.WelcomeActivity)
UserWait(4000)
LaunchActivity(com.your.package,your.package.name.MainActivity)
DispatchPointer(10,10,0,200,850,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,200,850,1,1,-1,1,1,0,0)
LaunchActivity(com.your.package,your.package.name.DetailActivity)
UserWait(1000)
DispatchPointer(10,10,0,100,800,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,100,800,1,1,-1,1,1,0,0)
UserWait(4000)

先把脚本从电脑push到手机

C:\MyProject\SVNProject>adb push C:\Users\xxx\Desktop\Document\demo.script /data/local/tmp
C:\Users\Hzx\Desktop\Document\demo.script: 1 file pushed. 0.1 MB/s (233 bytes in 0.003s)

命令:adb shell monkey -f /data/local/tmp/demo.script 10
有几个问题需要注意下,
7.1、需要让activity设置android:exported=”true”,使程序支持第三方启动

<activity
            android:name="com.your.package.WelcomeActivity"
            android:screenOrientation="portrait"
            android:exported="true">

7.2、如果需要操作的动作在很深的activity中,那脚本就得把所有的activity都写到脚本中
7.3、获取在屏幕中的点击动作,具体如何获取点击的像素位置,通过Android\sdk\tools\uiautomatorviewer.bat工具
这里写图片描述
只要像素点在这之间就行。
四、MonkeyRunner
1、API介绍
1.1、alert()
五、归结
1,monkey是测试随机动作事件。
2,monkeyscript可以满足对具体某个动作重复操作。
3,monkeyrunner可以实现错误截屏等操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值