uiautomator2自动化安卓手机操作

环境安装:通过 pip 安装库本身

复制代码
pip install -U uiautomator2

首次连接设备时,通常需要运行初始化命令,将必要的守护进程推送到手机

复制代码
python -m uiautomator2 init

连接设备:确保手机开启"开发者选项"和"USB调试"。连接后,用以下代码验证

复制代码
import uiautomator2 as u2

d = u2.connect()          # 自动连接
print(d.info)             # 打印设备信息,成功则显示分辨率、SDK版本等

uiautomator2 的核心是定位元素,推荐优先使用 textresourceId,因为它们最直观且稳定-3-11

常用定位方式 -10-11

  • 文本定位d(text="精选").click()

  • 资源 ID 定位d(resourceId="com.example:id/button").click()

  • 描述定位d(description="更多选项").click()

  • 组合定位d(className="android.widget.TextView", text="好友动态")

进阶定位------XPath :当元素属性不明显或需要复杂层级关系时,XPath 非常灵活-7

复制代码
# 查找包含特定文本的元素
d.xpath('//*[contains(@text, "登录")]').click()
# 简写规则:@ 代表 resourceId
d.xpath('@com.example:id/title')
复制代码
d(text="我的").click()                 # 点击
d(text="Views").long_click(2)         # 长按 2 秒
d(className="EditText").send_keys("hello") # 输入文本
d.swipe_ext("up", scale=0.8)          # 向上滑动屏幕

等待与同步 :显式等待比 sleep 更稳定,能有效避免因网络或动画导致的失败

复制代码
d(text="加载完成").wait(timeout=10.0)   # 等待元素出现,最多 10 秒
d(text="弹窗").wait_gone(timeout=5.0)   # 等待元素消失

弹窗监控:自动处理常见的系统权限弹窗,避免测试中断

复制代码
d.watcher.when("允许").click()  # 当出现"允许"按钮时自动点击
d.watcher.start()              # 启动监控

==================================================================

强烈推荐使用 UIAutoDev 工具:它能在浏览器中实时查看界面元素树,帮你快速生成定位代码,极大提升效率

确保电脑已安装 Python(建议 3.8 以上),然后执行

复制代码
pip install -U uiautodev

如果需要连接鸿蒙设备,可以改用

复制代码
pip install "uiautodev[harmony]"

cmd命令:

复制代码
uiauto.dev

ATX可以授权悬浮窗。

相关推荐
80s7771 小时前
动态代理和静态代理的区别,动态代理怎么提高网络安全性
python
niucloud-admin3 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
小叶肥辉3 小时前
LangChain链和LangGraph图的学习笔记【三】——分别用langchain_openai库和langchain_community库调用大模型
笔记·python·langchain
2401_873479404 小时前
IP属地为什么有时显示外省?用IP查询工具核查动态分配、运营商出口与GeoIP库
python·tcp/ip·ip
OKkankan6 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
山哥ol7 小时前
【Geany 环境配置与中文乱码解决参考】
python
会飞锦鲤7 小时前
基于 Mask R-CNN 的药片缺陷检测系统
人工智能·pytorch·python·神经网络·resnet-50
默 语7 小时前
Java新手入门:从零开始安装JDK并配置环境变量
java·开发语言·python·mysql·group by·1024程序员节·数据去重
清水白石0088 小时前
Python 异步编程深度解析:Cancellation 到底是异常还是控制信号?从 asyncio 取消机制到企业级事务设计最佳实践
开发语言·python