Android Uiautomator2 Python Wrapper新手入门:5分钟搭建自动化测试环境

Android Uiautomator2 Python Wrapper新手入门:5分钟搭建自动化测试环境

【免费下载链接】uiautomator2 Android Uiautomator2 Python Wrapper 【免费下载链接】uiautomator2 项目地址: https://gitcode.com/gh_mirrors/ui/uiautomator2

你还在为Android自动化测试环境配置繁琐而烦恼?还在为工具链依赖复杂而头疼?本文将带你5分钟从零搭建稳定高效的Android自动化测试环境,让你专注于测试逻辑而非环境配置。读完本文你将获得:

  • 快速安装uiautomator2的完整步骤
  • 设备连接与环境验证的实用技巧
  • 第一个自动化脚本的编写与运行方法
  • 常见问题的解决方案与最佳实践

环境准备与安装

系统要求

环境版本要求说明
Python3.8+推荐使用3.9或更高版本以获得最佳兼容性
Android设备4.4+ (API 19+)支持物理设备和模拟器
ADB工具已配置环境变量确保adb devices命令可正常运行

快速安装uiautomator2

通过pip命令一键安装最新版uiautomator2:

pip install -U uiautomator2

验证安装是否成功:

uiautomator2 --help

若输出帮助信息,则表示安装成功。

安装UI元素查看器

为了方便定位UI元素,推荐安装uiauto.dev:

pip install uiautodev

启动UI查看器:

uiauto.dev

然后在浏览器中访问https://uiauto.dev即可查看设备界面结构。

设备连接与环境验证

设备连接流程

mermaid

启用开发者选项与USB调试

  1. 在Android设备上,进入"设置" → "关于手机"
  2. 连续点击"版本号"7次,启用开发者选项
  3. 返回设置,进入"开发者选项"
  4. 开启"USB调试",并允许电脑调试权限

验证ADB连接

连接设备后,在电脑终端执行:

adb devices

若输出类似以下内容,则设备连接成功:

List of devices attached
123456f	device

初始化设备环境

在Python交互式环境中执行:

import uiautomator2 as u2
d = u2.connect()  # 连接设备
print(d.info)  # 获取设备信息

若输出设备信息类似以下内容,则环境初始化成功:

{
    'currentPackageName': 'com.android.launcher',
    'displayHeight': 1920,
    'displayRotation': 0,
    'displaySizeDpX': 411,
    'displaySizeDpY': 731,
    'displayWidth': 1080,
    'productName': 'OnePlus5',
    'screenOn': True,
    'sdkInt': 27,
    'naturalOrientation': True
}

第一个自动化测试脚本

基本脚本结构

mermaid

示例:启动设置应用并截图

import uiautomator2 as u2
import time

# 连接设备
d = u2.connect()  # 单个设备可省略参数,多个设备需指定序列号如u2.connect("123456f")

# 设置元素查找超时时间为10秒
d.implicitly_wait(10.0)

# 启动设置应用
d.app_start("com.android.settings")

# 等待应用启动
time.sleep(2)

# 截图并保存
d.screenshot("settings_screenshot.jpg")

# 关闭设置应用
d.app_stop("com.android.settings")

print("自动化测试完成,截图已保存")

运行脚本

将上述代码保存为first_test.py,在终端执行:

python first_test.py

若一切正常,脚本将启动设置应用、截图并关闭应用,当前目录下会生成settings_screenshot.jpg文件。

常用功能快速参考

设备控制基础操作

功能代码示例说明
屏幕操作d.screen_on() / d.screen_off()点亮/关闭屏幕
按键操作d.press("home") / d.press("back")模拟Home键/返回键
输入文本d.send_keys("hello")向当前焦点输入框发送文本
清空文本d.clear_text()清空当前输入框内容
滑动操作d.swipe(0.5, 0.8, 0.5, 0.2)从屏幕中间偏下滑动到中间偏上
方向滑动d.swipe_ext("up")向上滑动屏幕(支持up/down/left/right)

UI元素定位与操作

# 通过文本定位元素并点击
d(text="无线和网络").click()

# 通过资源ID定位元素
d(resourceId="com.android.settings:id/title").click()

# 通过类名定位并获取所有元素
elements = d(className="android.widget.TextView").all()
for elem in elements:
    print(elem.text)

# XPath定位
d.xpath("//*[@text='蓝牙']").click()

应用管理

# 安装应用(从URL)
d.app_install("https://example.com/app.apk")

# 启动应用
d.app_start("com.example.app")

# 停止应用
d.app_stop("com.example.app")

# 清除应用数据
d.app_clear("com.example.app")

# 获取应用信息
info = d.app_info("com.example.app")
print(f"应用版本: {info['versionName']}")

常见问题与解决方案

设备连接失败

问题现象u2.connect()抛出异常或返回空设备

解决方案

  1. 检查ADB连接:adb devices确保设备正常连接
  2. 重启ADB服务:adb kill-server && adb start-server
  3. 重新授权USB调试:拔插USB线,在设备上允许调试授权
  4. 手动指定设备序列号:d = u2.connect("设备序列号")

元素定位超时

问题现象UiObjectNotFoundError异常

解决方案

# 增加隐式等待时间
d.implicitly_wait(15.0)

# 显式等待元素出现
if d(text="目标文本").wait(timeout=10):
    d(text="目标文本").click()
else:
    print("元素未找到")

中文乱码问题

问题现象:获取文本显示乱码或发送中文失败

解决方案

# 设置输入法为uiautomator2内置输入法
d.set_input_ime("com.github.uiautomator/.InputIME")

# 发送中文文本
d.send_keys("中文测试")

进阶配置与最佳实践

启用调试日志

import logging
from uiautomator2 import enable_pretty_logging

# 启用美化日志输出
enable_pretty_logging()

# 设置日志级别为DEBUG
logging.getLogger("uiautomator2").setLevel(logging.DEBUG)

浮动窗口权限设置

为确保服务稳定性,需在设备上为"uiautomator"应用授予浮动窗口权限:

  1. 进入设备"设置" → "应用管理" → "uiautomator"
  2. 找到"显示在其他应用上层"或"悬浮窗"权限
  3. 启用该权限

自动化测试框架集成

推荐使用pytest作为测试框架,结合uiautomator2进行更专业的测试用例管理:

# test_app.py
import pytest
import uiautomator2 as u2

@pytest.fixture(scope="module")
def device():
    d = u2.connect()
    d.implicitly_wait(10.0)
    yield d
    d.app_stop_all()  # 测试结束后停止所有应用

def test_app_start(device):
    device.app_start("com.android.settings")
    assert "设置" in device.dump_hierarchy()

总结与展望

本文介绍了Android Uiautomator2 Python Wrapper的快速环境搭建方法,包括安装配置、设备连接、基本操作和常见问题解决。通过本文的步骤,你已经掌握了自动化测试环境的基础搭建技能。

uiautomator2作为一个轻量级但功能强大的自动化框架,具有速度快、稳定性高、API简洁等优点,非常适合Android应用的UI自动化测试和设备控制场景。后续你可以深入学习元素定位策略、复杂手势操作和测试报告生成等高级功能。

最后,建议定期查看官方文档和GitHub仓库以获取最新功能和更新:

  • 项目仓库:https://gitcode.com/gh_mirrors/ui/uiautomator2
  • 官方文档:项目内的README.md和QUICK_REFERENCE.md

祝你的自动化测试之旅顺利!

【免费下载链接】uiautomator2 Android Uiautomator2 Python Wrapper 【免费下载链接】uiautomator2 项目地址: https://gitcode.com/gh_mirrors/ui/uiautomator2

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值