uiautomator2:用 Python 控制 Android 手机,8K Star 的开源自动化方案

uiautomator2 在 GitHub 上已经有 8125 个 Star 了。

openatx 团队开源了这个 Python 库,核心就一件事,让开发者用 Python 代码直接操控 Android 设备。安装、启动 App、点击、滑动、截图,全在脚本里搞定。项目支持 Android 4.4 以上系统,Python 3.8 以上环境。

1、 它是怎么工作的

框架分两层。设备端跑一个基于 UiAutomator 的 HTTP 服务,提供 Android 自动化所需的各种接口。Python 客户端通过 HTTP 和这个服务通信,调用 UiAutomator 的功能。

把 Android 的自动化能力通过 HTTP 接口暴露给 Python,代码写起来比直接用 Java 的 UiAutomator 简单得多。连接设备有三种方式:通过 USB 序列号、通过环境变量 ANDROID_SERIAL、通过 transport_id。设备连接后,可以获取屏幕分辨率、Android 版本、当前运行的应用包名和 Activity 等信息。

正文顶部截图

2、 快速上手

前提条件:一台开启开发者选项的 Android 手机(系统 4.4+),连上电脑,确保 adb devices 能识别。

import uiautomator2 as u2

d = u2.connect()
print(d.info)

连接设备后,就可以在 Python 中直接操作手机了。u2.connect() 返回一个 Device 对象,所有操作都通过这个对象完成。查看设备信息、获取当前运行的应用、开关屏幕、截屏,都是简单的方法调用。

下面是一个操控 B 站的例子,启动应用、等待加载、点击元素、获取数据:

d.app_start('tv.danmaku.bili', stop=True)
d.wait_activity('.MainActivityV2')
d.xpath('//*[@text="我的"]').click()
fans_count = d.xpath('//*[@resource-id="tv.danmaku.bili:id/fans_count"]').text
print(f"粉丝数: {fans_count}")

3、 主要功能

  • 元素定位:支持 XPath 和 UiSelector 两种方式。XPath 可以用 text、resource-id 等属性精确定位。UiSelector 支持 text、className、description 等十几种属性组合,还支持子节点和兄弟节点查找。可以通过 .exists 判断元素是否存在,.wait 等待元素出现,.click 执行点击。
  • 手势操作:点击、长按、滑动、拖拽、双指捏合。所有坐标操作都支持百分比,方便适配不同分辨率的设备。swipe_ext 支持按方向滑动,pinch_inpinch_out 支持双指缩放。
  • App 管理:安装、启动、停止、清除数据。还能获取 App 详细信息,包括版本号、Activity 名称、图标。支持 Session 模式,可以监控 App 是否崩溃。app_list_running 可以列出所有正在运行的应用。
  • 设备交互:截屏支持 PIL 和 OpenCV 格式,可以直接在内存中处理图片。获取设备信息包括分辨率、Android 版本、序列号。操作剪贴板、控制按键、开关屏幕、解锁,覆盖日常调试需求。
  • 输入法辅助:当普通输入无效时,自动安装辅助输入法,保证 send_keys 可靠输入文字。hide_keyboard 可以收起软键盘。
  • 弹窗处理:WatchContext 可以自动监控并处理系统弹窗,比如点击同意、确定、取消等按钮,避免自动化脚本被弹窗卡住。支持正则匹配和回调函数。

README区域截图

4、 适合谁用

  • 做 Android 自动化测试的 QA 工程师,用它写脚本替代重复的手工测试
  • 需要批量操作多台设备的运维人员,配合 adb 可以同时控制几十台手机
  • 用 Python 做手机端 RPA 的开发者,自动执行数据采集、内容同步等任务
  • 研究 Android UI 自动化的个人开发者,项目文档完善、社区活跃

安装一行命令:

pip install uiautomator2

安装后可以用 uiautomator2 doctor 检查环境是否就绪。项目还附带 uiautodev 元素查看工具,在浏览器里查看 UI 层级并生成 XPath,降低自动化脚本的编写门槛。

就绪。项目还附带 uiautodev 元素查看工具,在浏览器里查看 UI 层级并生成 XPath,降低自动化脚本的编写门槛。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐