前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安卓自动化之ADB操作

安卓自动化之ADB操作

作者头像
吾非同
发布2020-10-26 12:24:06
1.5K0
发布2020-10-26 12:24:06
举报
文章被收录于专栏:吾非同

对于 Android 端的自动化测试,ADB 的重要性不言而喻,很多开源的自动化框架操作大都是利用 ADB 命令来完成。

下面对 ADB 在平时自动化操作过程中一些问题做一个汇总。

1、ADB 简介

ADB 全称:Android Debug Bridge,是一种命令行工具,方便 PC 端和手机端进行通信。

只需要去官网下载 Android SDK,然后根据 ADB 文件的路径 配置环境变量 即可。

2、连接设备

进入设置里的开发者选项,开启开发者选项和 USB 调试。

数据线直连设备:可以使用 adb devices 检查设备是否连接成功。

无线连接设备:

无线连接设备需要分 3 步完成。分别是:让 PC 和设备在同一局域网、映射端口、通过 IP 完成连接。

代码语言:javascript
复制
# 映射端口
adb tcpip 端口号

# 通过 IP 地址连接
adb connect 设备IP

3、获取应用包名、入口 Activity

自动化打开目标应用 App 需要应用包名和入口 Activity 参数,获取这两个参数有多种方式。

其中最常用的方式是利用 adb shell dumpsys 命令。

代码语言:javascript
复制
# 获取应用的包名和入口 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 会更方便。

代码语言:javascript
复制
# 滑动,直接使用起始坐标更方便
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。

代码语言:javascript
复制
# 方式一:(适用于大部分应用,但是打不开手淘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 双击后打开。

6、常用问题

adb 常见的问题包含:设备找不到或者设备连接不上。

请先确认手机开发者模式和 USB 模式开启,PC 端的 ADB 环境配置成功。

最后,试试断开所有连接或者重启设备。

代码语言:javascript
复制
# 断开所有连接
adb disconnect 

# 重启手机
adb reboot

# 查看设备
adb devices
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吾非同 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档