这篇文章是小白掌握adb基础命令的小汇总~
后续还会补充,文章相关adb暂时只应用于日常的测试工作中
在我目前的工作中,adb主要用于帮助我完成自动化的实现(后续会讲到基于adb+python的一个组合应用),以及完成一个安卓的简单的性能测试-monkey
一、adb简介
adb的全称为Android Debug Bridge,就是起到调试桥的作用。借助adb工具,我们可以手机管理设备或模拟器的状态。
还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。
它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。包括三大内容:电脑上运行的客户端;在你用于开发的机器上作为后台进程运行的服务器;一个以后台进程的形式运行于模拟器或设备上的守护程序(daemon);
ADB命令的主要功能:
- 运行Android设备的shell(命令行)
- 管理模拟器或Android设备的端口映射
- 安装/卸载APK程序
- 计算机和Android设备之间上传/下载文件
好啦~废话不多说,接下来我主要从我工作的两方面来介绍我常用的adb命令~
二、针对自动化测试
adb在移动端自动化中起了一个非常大的桥梁(当然啦,目前只支持安卓哈哈哈)
如果你现在使用的是基于adb+appium的框架来写的一个自动化,那么你需要掌握以下的adb命令:
1. 很多小伙伴在实践过程会发现Android9.0以上的系统,uiautomatorview会报错,检查发现连接也没问题,下载的adb也没有问题,就是会报错很苦恼。这是因为Android 9.0以上,不能直接通过自带的uiautomatorview上的按钮直接获取页面以及页面元素,此时,你需要在终端敲下4行命令,分别获取以及下载页面及页面元素
- adb shell uiautomator dump /sdcard/app.uix(这一步操作是获取当前真机的页面元素)
- 完成这步操作后需要在D盘新建一个app.uix的文件,记住后缀是uix哦!!!
- adb pull /sdcard/app.uix D:/app.uix(这一步操作是将前一步获取到的元素存在这个文件下)
- adb shell screencap -p /sdcard/app.png(这一步是获取当前真机的页面)
- 完成这步操作后需要在D盘新建一个app.png的文件
- adb pull /sdcard/app.png D:/app.png(这一步操作是将前一步获取到的页面存在这个文件下)
- 之后再打开uiautomatorview导入这两个文件就可以成功获取到页面以及元素啦
比较麻烦的就是每次换一个页面就需要重复上诉操作,这里小编建议大家可以把以上的命令写进一个.bat文件,直接进入视图,执行bat就可以啦~(感兴趣的小伙伴可以百度下如何制作bat,小编有空也会出一个)
2. 完成页面的元素获取之后,我们就要开始自动化之路啦~
adb基于appium的话需要用到的其实就是关于获取设备的一些操作
首先我们需要获取到设备的识别码,让我们的appium找到设备并执行代码:
adb devices
框起来的就是设备号了,获取到了设备号接下来我们就需要获取需要执行代码的应用了(获取包名以及活动包名)
adb shell dumpsys window w|findstr name=
获取到了包名后,基本上,adb的应用在这一块就差不多了,后续需要用上的我还会再补充~
三、针对monkey
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
3.1 进入Monkey
- 首先检测android真机/模拟器是否已经连接:adb devices
- 然后选取一个设备来进入shell:adb -s XX设备 shell,当然如果你只有一个设备,可以写adb shell
3.2 使用monkey进行参数的步骤
- 使用模拟器或者真机,注意要在DOS里面使用adb devices验证
- 找到APP应用程序的包名,也就是PackageName
- 写出Monkey命令进行测试:adb shell monkey -p 应用软件的包名 -v 操作数 或进入shell里执行命令:monkey -p 应用软件的包名 -v 操作数
3.3 PackageName怎么获取
上诉步骤有教大家怎么获取包名哦~
3.4 monkey的参数
1. -p参数用于约束限制
//下面的命令表示Monkey程序对包名这个程序模拟100次随机用户事件
adb shell monkey -p 包名 100
//下面的命令表示Monkey程序对包名1,包名2,包名3模拟100次随机用户事件
adb shell monkey -p 包名1 –p 包名2 -p 包名3 100
//下面的命令表示Monkey程序手机内所有的程序模拟100次随机用户事件
adb shell monkey 100
2. -v参数要定义执行monkey的时候的日志显示详情的
-v:一级日志(默认的,显示的日志内容最少)
-v -v:二级日志,会显示随机事件的比例以及发送事件的顺序等
-v -v -v:三级日志,最详细
命令如:adb shell monkey -p com.tencent.mm -v -v 100
命令后面加上 > 路径,可以将log导出到本地查看,例:adb shell monkey -p x -v -v -v y > D:/log.txt
3. -s [-s SEED]
在多次执行monkey的时候,就算指令完全一样,发出的随机事件及顺序不一样 在每次执行的时候,可以都要给相同的一个种子数(随机的数字),发出的随机事件及顺序就一样 主要使用的场景:复现之前monkey执行时候出现的问题
adb shell monkey -p com.tencent.mm -s 1588 -v -v 10
adb shell monkey -p com.tencent.mm -s 1588 -v -v 10
adb shell monkey -p com.tencent.mm -s 158 -v -v 10
4 . --throttle [--throttle MILLISEC] (熟练掌握)
在每次事件发送的时间间隔,以一定频率发送事件
adb shell monkey -p com.tencent.mm -s 1588 --throttle 1000 -v -v 100
5. [--pct-touch PERCENT] 注意:PERCENT表示占总事件的百分之多少
是调整发送的触摸事件的比例功能,点击一个位置,再松开
- (action_down/action_up)
touch后面的100,表示100次操作都是触摸事件
- adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-touch 100 -v -v 1000
--pct-trackball 30 表示30%的轨迹球事件
- adb shell monkey -p com.tmall.wireless -v -v -pct-touch 50 -pct-trackball 30 -throttle 300 100
用monkey测试小米商城的这个包触摸操作百分之50,轨迹球操作百分之30,其它操作百分之20,总共进行100次随机点击,事件之间间隔300ms
- adb shell monkey -p com.xiaomi.shop --throttle 300 -pct-touch 50 --pct-trackball 30 -v 100
6.[--pct-motion PERCENT] 注意:PERCENT表示占总事件的百分之多少
是调整发送的拖动/移动事件的比例功能,点击一个位置,拖到另一个位置,再松开(action_down/ACTION_MOVE/action_up)
adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-motion 100 -v -v 10
7.[--pct-syskeys PERCENT]注意:PERCENT表示占总事件的百分之多少
模拟设备的电话、主页、音量加、减等操作
adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-syskeys 100 -v -v 10
8.--pct-appswitch PERCENT 注意:PERCENT表示占总事件的百分之多少
覆盖你指定包(app)activity,切换不同的页面
adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-appswitch 80 -v -v 100
9. ignore
[–ignore-crashes]
- 忽略monkey执行过程中crash这种问题,继续执行monkey
- adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-syskeys 100 --ignore-crashes -v -v 100
[–ignore-timeouts]
作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
[–ignore-security-exception]
作用:通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。