对于 Android 端的自动化测试,ADB 的重要性不言而喻,不少开源的自动化框架操做大都是利用 ADB 命令来完成。android
下面对 ADB 在平时自动化操做过程当中一些问题作一个汇总。shell
1、ADB 简介windows
ADB 全称:Android Debug Bridge,是一种命令行工具,方便 PC 端和手机端进行通讯。缓存
只须要去官网下载 Android SDK,而后根据 ADB 文件的路径 配置环境变量 便可。框架
2、链接设备tcp
进入设置里的开发者选项,开启开发者选项和 USB 调试。ide
数据线直连设备:可使用 adb devices 检查设备是否链接成功。工具
无线链接设备:测试
无线链接设备须要分 3 步完成。分别是:让 PC 和设备在同一局域网、映射端口、经过 IP 完成链接。ui
# 映射端口 adb tcpip 端口号 # 经过 IP 地址链接 adb connect 设备IP
3、获取应用包名、入口 Activity
自动化打开目标应用 App 须要应用包名和入口 Activity 参数,获取这两个参数有多种方式。
其中最经常使用的方式是利用 adb shell dumpsys 命令。
# 获取应用的包名和入口 Activity adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' --color=always
另一种方式是在安卓应用市场下载目标应用的 Apk,而后利用 Android Studio IDE 分析 APK,拿到 Manifest.xml 文件,获得应用的包名和入口 Activity。
4、经常使用操做
Airtest、Appium 等自动化框架都是在 ADB 的基础上进行了封装,使咱们对打开应用、点击、滑动等操做变得很简单。
可是,下面操做直接 adb 会更方便。
# 滑动,直接使用起始坐标更方便 adb shell input swipe 开始x坐标 开始y坐标 结束x坐标 结束y坐标 滑动时长 # 上传图片到设备 adb push 文件本地路径 设备路径 # 手机下载到PC端 adb pull 文件在设备上的路径 PC端本地路径 # 生成当前界面的UI元素树 adb shell uiautomator dump /data/local/tmp/uidump.xml # 清除应用App缓存数据 adb shell pm clear
须要注意的是,利用 adb shell am 命令打开应用的方式适用于部分不兼容自动化框架的 App。
# 方式一:(适用于大部分应用,可是打不开手淘App) os.popen('adb shell am start -n %s/%s' % (package_name, activity_name)) # 方式二: os.popen('adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n %s/%s' % ( package_name, activity_name)) # 方式三: os.popen('adb shell am start %s/%s' % (package_name, activity_name))
5、元素获取
元素获取的方法也有 3 种。
方法一:是直接使用 adb 命令拿到当前界面的 UI 树,进而查找元素的 ID 或者文本属性。
方式一只适合分析简单的界面,分析复杂的界面元素定位就没有那么直观了。
方式二:使用 Android SDK 自带的 Monitor 工具。
配置 SDK 环境以后,只须要命令行输入 Monitor 便可以打开 DDMS。
打开 DDMS 后,点击左侧的 Dump View 按钮,点击中间的手机元素,右侧就能分析元素的层次结构和元素属性。
方式三:和方式二类型,用 SDK 自带的工具 uiautomatorviewer 双击后打开。
六、经常使用问题
adb 常见的问题包含:设备找不到或者设备链接不上。
请先确认手机开发者模式和 USB 模式开启,PC 端的 ADB 环境配置成功。
最后,试试断开全部链接或者重启设备。
# 断开全部链接 adb disconnect # 重启手机 adb reboot # 查看设备 adb devices
推荐阅读
闲鱼上哪些商品抢手?Python 分析后告诉你
聊聊 Airtest 自动化工具
薅羊毛 | Python 自动化带你轻松赚钱(完结版)
THANDKS-End -