阿杰,我给你整理一份 uiautomator2
自动化测试工具详解,从概念、安装、基本用法到进阶技巧,带示意和代码示例。
一、什么是 uiautomator2
- 简介:
uiautomator2
是 Android UI 自动化测试工具,基于 Google 的 UIAutomator 框架。- 通过 Python 脚本操作 Android 设备,实现 UI 测试、自动化任务。
- 特点:
- 支持多种 Android 版本(API 16+)
- 操作元素灵活(通过 resource-id、text、class、description 等)
- 支持截图、滚动、滑动、输入文本
- 支持远程设备和 adb 连接
二、安装
# 安装 Python 依赖
pip install --upgrade pip
pip install uiautomator2
- 初始化设备:
# 连接设备(USB 或 Wi-Fi)
python -m uiautomator2 init
- 通过 adb 连接设备:
# USB
adb devices
# Wi-Fi
adb connect 192.168.1.100:5555
三、基础用法
1. 连接设备
import uiautomator2 as u2
# 通过设备序列号连接
d = u2.connect('device_serial')
# 通过 Wi-Fi 连接
# d = u2.connect('192.168.1.100')
2. 查看屏幕信息
print(d.info) # 打印设备信息
print(d.display_info) # 屏幕分辨率
3. UI 元素操作
# 点击按钮
d(text="登录").click()
# 输入文本
d(resourceId="com.example:id/input").set_text("hello")
# 滑动/滚动
d(scrollable=True).scroll.to(text="设置")
# 长按
d(text="文件").long_click()
# 截图
d.screenshot("screen.png")
四、控件定位方式
uiautomator2
支持多种定位方式:
定位方式 | 示例 |
---|---|
text | d(text="确定") |
resourceId | d(resourceId="com.example:id/btn") |
className | d(className="android.widget.Button") |
description / desc | d(description="返回") |
index | d(index=0) |
组合条件 | d(text="登录", className="android.widget.Button") |
五、高级用法
1. 等待元素
# 最多等待 10 秒
d(text="登录").wait(timeout=10)
2. 多元素操作
# 遍历列表
for item in d(className="android.widget.TextView").all():
print(item.get_text())
3. 调用 adb 命令
d.shell("input keyevent 26") # 点亮屏幕
4. Toast 消息捕获
msg = d.toast.get_message(5.0, default="未检测到")
print(msg)
5. App 管理
d.app_start("com.example.app")
d.app_stop("com.example.app")
d.app_clear("com.example.app")
六、实战示例:登录流程
import uiautomator2 as u2
import time
d = u2.connect('device_serial')
# 启动 App
d.app_start("com.example.app")
time.sleep(2)
# 输入账号密码
d(resourceId="com.example:id/username").set_text("ajie")
d(resourceId="com.example:id/password").set_text("123456")
# 点击登录
d(text="登录").click()
# 验证是否登录成功
if d(text="首页").exists(timeout=5):
print("登录成功")
else:
print("登录失败")
七、优点与适用场景
- 优点:
- Python 脚本简单易用
- 支持远程设备、USB、Wi-Fi
- 丰富的控件操作 API
- 支持截图、日志和 Toast 消息捕获
- 适用场景:
- Android App 功能自动化测试
- UI 回归测试
- 自动化日常操作(批量操作 App)
- 自动化抓取数据(需要遵守法律与协议)
八、注意事项
- 设备授权:首次连接需在手机端允许 USB 调试。
- App 权限:部分控件操作需要 App 拥有对应权限(如存储、通知)。
- 稳定性:复杂动画或网页控件可能导致控件识别失败,可加
wait
或使用坐标点击。 - Python 版本:推荐 Python 3.6+
发表回复