当前位置:首页>python>python-uiautomator2环境搭建

python-uiautomator2环境搭建

  • 2026-10-11 14:52:13
python-uiautomator2环境搭建

GitHub地址:https://github.com/openatx/uiautomator2

介绍

uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:

1、测试脚本只能使用Java语言。

2、测试脚本必须每次被上传到设备上运行。 我们希望测试能够用一个更脚本化的语言,

例如Python编写,同时可以每次所见即所得地修改测试、运行测试。

而iautomator2项目是对xiaocong/uiautomator的增强,主要有以下部分:

1. 设备和开发机可以脱离数据线,通过WiFi互联(基于atx-agent)

2. 集成了openstf/minicap加快截图速度

3. 集成了openstf/minitouch达到精确实时控制设备

4. 修复了xiaocong/uiautomator经常性退出的问题

5. 代码进行了重构和精简,方便维护

工作原理

如图所示,python-uiautomator2主要分为两个部分,python客户端,移动设备

python端:运行脚本,并向移动设备发送HTTP请求

移动设备 :移动设备上运行了封装了uiautomator2的HTTP服务,解析收到的请求,并转化成uiautomator2的代码。

整个过程

1. 在移动设备上安装atx-agent(守护进程), 随后atx-agent启动uiautomator2服务(默认7912端口)进行监听

2. 在PC上编写测试脚本并执行(相当于发送HTTP请求到移动设备的server端)

3. 移动设备通过WIFI或USB接收到PC上发来的HTTP请求,执行制定的操作


环境搭建

1.安装Python

如命令行可以执行python,则跳过此步骤

在python官网下载python,并配置环境变量,可点击查看详细教程

2.安装adb

如命令行可以执行adb devices,则跳过此步骤

从谷歌官网下载Android Platform Tools , 解压,并加包含adb.exe的目录加入到系统的PATH中。

3.安装uiautomator2

同时需要pillow来处理截图数据

pip install --pre uiautomator2pip install pillow

4.初始化

部署相关的守护进程。

电脑连接上一个手机或多个手机, 确保adb已经添加到环境变量中,执行下面的命令会自动安装本库所需要的设备端程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch

python -m uiautomator2 init

安装完成,设备上会多一个uiautomator的应用。

配置手机设备参数:

有两种方法,一种是通过WIFI,另一种是通过USB数据线将手机连接电脑。

WiFi连接更方便一点,需要保持PC和手机使用的一个WIFI,查看手机连接WIFI的IP地址。

以上环境搭建基本完成

5.确定环境是否搭建成功

接下来看一段Python脚本,运行成功时手机会弹出一句:Hello world, 显示时间为3秒

7.应用及操作

调用uiautomator2的过程

1. 配置手机设备参数,设置具体操作的是哪一台手机

2. 抓取手机上应用的控件,制定对应的控件来进行操作

3. 对抓取到的控件进行操作,比如点击、填写参数等。


定位元素

我们可以借助Android SDK自的uiautomatorviewer查看元素,这就要求手机必须以USB的方式连接PC,我前面使用的是WIFI连接进行连接的。所以,openatx提供了另外一个工具weditor 来解决这个问题。

GitHub地址:https://github.com/openatx/weditor

1、安装:

pip install --pre --upgrade weditor

2、使用:

python3 -m weditor

默认会通过浏览器打开页面:http://atx.open.netease.com/

在页面左上角选择Android,输入设备IP(192.168.31.234),点击Connect按钮。

当我们操作完手机后,可以点击“Reload”按钮进行刷新,从而保持与设备上的界面保持同步。weditor 还可以帮我们生成代码。

总之,研究一下就会用了。

编写测试脚本

这里针对魅族社区App进行测试。

import uiautomator2 as u2from time import sleepd = u2.connect('192.168.31.234')# 启动Appd.app_start("com.meizu.mzbbs")# 搜索d(resourceId="com.meizu.mzbbs:id/j0").click()# 输入关键字d(resourceId="com.meizu.mzbbs:id/p9").set_text("flyme")# 搜索按钮d(resourceId="com.meizu.mzbbs:id/tp").click()sleep(2)# 停止appd.app_stop("com.meizu.mzbbs")

app_start()和app_stop()用于启动和停止应用。

常用的定位方式:

  • ResourceId定位:d(resourceId="com.meizu.mzbbs:id/tp").click()
  • Text定位:d(text="精选").click()
  • Description定位:d(description="..").click()
  • ClassName定位:d(className="android.widget.TextView").click()

最新文章

随机文章