APP自动化中 ADB Monkey用法

一、monkey是干什么的?

我们可以使用monkey做手机端性能的压力测试,稳定性测试

二、monkey在使用的时候,他的运行特性

monkey默认配置下执行,会在手机中随机的点击或者轻触我们的手机中应用,不过这个时候,我们还可以指定对应的软件包,monkey就会在指定的软件包中执行,在执行的时候的时候如果遇到了,崩溃或者是异常,或者应用无响应,这个时候monkey就会停止运行

三、ADB Monkey的用法

随机对手机进行操作

adb shell monkey 参数选项 执行次数

比如后面跟300次,他就会自动操作300次没有规则

复制代码
adb shell monkey 300

指定随机操作在那个应用下执行

adb shell monkey -p 包名 次数

我们可以先输入 adb shell pm list packages -3 来查看第三方安装的软件包名,后面跟上执行次数

指定连接的多个手机中的一个,然后指定对应的应用

adb - s 设备序列号 shell monkey -p 包名 次数

要查看设备序列号使用:adb devices 就能查看已连接的手机的设备名称

指定连接的多个手机中的一个,然后指定多个应用执行

adb - s 设备序列号 shell monkey -p 包名 -p 包名 次数

输出日志

输出日志可以指定日志输出到pc端可以使用>进行覆盖输出,也可使用>>追加输出

默认是0级别日志,只有开始结束

adb -s 设备序列号 shell monkey -p 包名 -v 次数>pc端路径 1级日志

adb -s 设备序列号 shell monkey -p 包名 -v-v 次数>pc端路径 2级日志

adb -s 设备序列号 shell monkey -p 包名 -v-v-v 次数>pc端路径 3级日志

级别越高输出的日志就越详细

增加执行动作

adb -s emulator-5554 shell monkey -p com.tal.kaoyan -p com.mymoney --pct-touch 20 --pct-majornav 10 -v-v 1000>e:test\0913.log

adb -s 设备序列号 shell monkey -p 包名 --动作名 动作百分比 --动作二 百分比 -v 次数 >输出路径

各个动作的百分比加起来不能超过100%

关于各种事件可以参考上表

执行过程如果遇到崩溃

执行过程如果遇到崩溃,或者是应用无响应如何解决?

在命令行中加参数 --ignore-crashes --ignore-timeouts 来解决

--ignore-security-exceptions 忽略安全许可

--ignore-native-crashes 忽略本地崩溃异常

--monitor-native-crashes 监控本地崩溃并进行报告上传

adb -s emulator-5554 shell monkey -p com.tal.kaoyan -p com.mymoney --pct-touch 20 --pct-majornav 10 --ignore-crashes -v-v 1000>e:test\0913.log

模拟像真是用户的操作

--throttle 时间, 作用就是让操作之间有一个时间间隔,时间是以毫秒为单位的
adb -s emulator-5554 shell monkey -p com.tal.kaoyan -p com.mymoney --pct-touch 20 --pct-majornav 10 --ignore-crashes --ignore-timeouts -v-v --throttle 2000 1000

复现上一次的操作

在上一次运行过程中如果遇到了bug或者异常,我想去复现上一次的操作,这个时候我该怎么操作?

把上一次运行完成之后的seed取出来,取出来之后在下一次执行的时候用这个seed就可以复现上一次的操作

adb -s emulator-5554 shell monkey -p com.tal.kaoyan -p com.mymoney --pct-touch 20 --pct-majornav 10 --ignore-crashes --ignore-timeouts -v-v --throttle 2000 -s 上一次的seed序列号 50>e:test\0913.log

关于这个seed序列号是在日志中查看,找到日志中的seed的值加上去即可

日志中这个值就是我们要的

三、分析日志

第一ctrl+F,在日志中寻找error、exception、Failed、crash、ANR等错误信息

第二:找到对应的错误信息后,然后找离这个错误最近的那个switch,然后通过包名确定应用,然后再确定应用中对应的活动窗口

查看错误

可以看到切换到了哪个 APP,从哪个 Activity跳转到了哪个 Activity,如果发生了异常,就可以看出是在哪个App 和 Activity 中发生的。注:在允许一次测试多个应用时,会看到多次 APp切换;只测试一个应用时,一般只看到一次 App 切换,除非应用异常后重启

注意:我们可以搜索Injection Failed关键词来代替以上关键词

查看执行了什么操作

记录各种随机操作及中间的延迟时间,主要是以下几种操作

查看事件百分比

根据上面的表我们能知道哪些事件执行的占比是多少

四、monkey自定义脚本进行登录

使用monkey自定义脚本进行登录,然后可以进行登录之后的操作

1、先自定义一个脚本文件

#头信息

type = raw events

count = 1

speed = 1.0

#脚本内容

start data >>

#启动一个app

LaunchActivity(com.tal.kaoyan,com.tal.kaoyan.ui.activity.SplashActivity)

#这是等待时间是以毫秒为单位

UserWait(20000)

#点击某一个坐标

Tap(84,260)

UserWait(1000)

#对输入框输入内容

DispatchString(zhangtiedan1)

UserWait(1000)

Tap(84,329)

UserWait(1000)

DispatchString(zhangtiedan123)

UserWait(1000)

Tap(84,443)

UserWait(5)

2、把这个文件推送到手机中

adb push 脚本文件路径 /sdcard

3、执行

adb shell monkey -f /sdcard/脚本文件 运行次数

复制代码
type = raw events
count = 1
speed = 1.0
start data >>

LaunchActivity(com.tal.kaoyan,com.tal.kaoyan.ui.activity.SplashActivity)

UserWait(20000)

Tap(84,260)

UserWait(1000)

DispatchString(zhangtiedan1)

UserWait(1000)

Tap(84,329)
UserWait(1000)

DispatchString(zhangtiedan123)
UserWait(1000)
Tap(84,443)
UserWait(5)

这样就可以完成对应app的操做了

相关推荐
小白学大数据1 小时前
Python 自动化爬取网易云音乐歌手歌词实战教程
爬虫·python·okhttp·自动化
守城小轩6 小时前
基于Chrome140的Yahoo自动化(关键词浏览)——需求分析&环境搭建(一)
运维·自动化·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
chaofan9808 小时前
2026年大模型接入实测:高并发场景下企业级API网关横向对比与选型指南
人工智能·gpt·自动化·api
舟遥遥娓飘飘8 小时前
如何解决 Claude Code 频繁授权(权限请求)问题
自动化·ai编程
V搜xhliang02468 小时前
OpenClaw科研全场景用法:从文献到实验室的完整自动化方案
运维·开发语言·人工智能·python·算法·microsoft·自动化
STER labo10 小时前
mysql配置环境变量——(‘mysql‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件解决办法)
数据库·mysql·adb
liangdabiao11 小时前
乐高摩托车深度报告-致敬张雪夺冠 -基于llm-wiki技术自动化写文章的效果
运维·人工智能·自动化
测试那点事儿11 小时前
第10章 零基础接口自动化到 Jenkins 持续集成【定时监控与邮件告警完整落地】
ci/cd·自动化·jenkins
Python大数据分析@12 小时前
浏览器自动化工具 Selenium,Playwright,Puppeteer 做爬虫有哪些弊病?
爬虫·selenium·自动化
qq_4542450312 小时前
从 UI 操作到环境交互:一种通用元命令自动化协议的设计与意义
人工智能·ui·自动化·交互