【保姆级教程】解决 uiautomator2+weditor 连接模拟器的全流程问题(以 MuMu 为例)
在使用 uiautomator2
进行 Android 自动化测试时,很多开发者会遇到设备连接、weditor 启动失败等问题。本文以 MuMu 模拟器为例,详细记录从环境搭建到解决各类报错的全过程,帮助大家快速避坑。
一、核心工具与环境准备
1. 必备工具
- Python 3.6+:
uiautomator2
和weditor
的运行环境 - ADB 工具:用于设备通信(Android SDK Platform Tools)
- MuMu 模拟器:本文以 MuMu 为例,其他模拟器(夜神、雷电等)流程类似
- uiautomator2:Android 自动化库
- weditor:界面元素分析工具
2. 环境安装步骤
bash
# 安装uiautomator2
pip install uiautomator2# 安装weditor
pip install weditor# 初始化uiautomator2(向设备安装ATX服务)
python -m uiautomator2 init
二、常见问题与解决方案
问题 1:ADB 无法识别模拟器(adb devices
无设备)
现象
执行 adb devices
后,输出为空或仅显示 List of devices attached
。
解决步骤:
开启模拟器开发者模式:
- 模拟器中打开「设置→关于手机」,连续点击「版本号」7 次激活开发者模式。
- 返回设置,进入「开发者选项」,勾选「USB 调试」(部分版本需勾选「USB 调试(安全设置)」)。
确认模拟器 ADB 端口:
- MuMu 模拟器端口:旧版
7555
,新版16384
(可在多开器中查看)。 - 手动连接:
adb connect 127.0.0.1:16384
(替换为实际端口)。
- MuMu 模拟器端口:旧版
重启 ADB 服务:
bash
adb kill-server # 关闭服务 adb start-server # 重启服务
问题 2:weditor 提示 “Local server not started”
现象
执行 weditor
或 python -m weditor
后,浏览器提示服务未启动。
解决步骤:
清理残留进程:
- 打开任务管理器,结束所有
python.exe
进程(避免端口占用)。
- 打开任务管理器,结束所有
用绝对路径启动:直接指定 Python 安装路径,避免环境变量问题:
bash
"D:\pyversion\python3.10\python.exe" -m weditor # 替换为你的Python路径
更换端口启动:若默认端口
17310
被占用,指定新端口:bash
python -m weditor --port 17311 # 访问 http://127.0.0.1:17311
重装依赖:若服务文件损坏,卸载后重新安装:
bash
pip uninstall weditor uiautomator2 -y pip install weditor uiautomator2 --upgrade
问题 3:weditor 连接设备时报错 AttributeError: 'Device' object has no attribute 'address'
现象
在 weditor 中输入设备名并点击Connect
后,控制台报错,提示address
属性不存在。
解决步骤:
这是weditor
与uiautomator2
版本兼容问题,需修改源码:
找到报错文件:路径:
D:\pyversion\python3.10\lib\site-packages\weditor\web\handlers\page.py
(根据实际 Python 路径调整)。修改代码:打开文件,找到第 80 行(或报错行):
python
运行
ws_addr = get_device(id).device.address.replace("http://", "ws://")
将
address
替换为wlan_ip
:python
运行
ws_addr = get_device(id).device.wlan_ip.replace("http://", "ws://")
重启 weditor:修改后保存文件,重新启动服务即可正常连接。
问题 4:设备显示 “unauthorized”(未授权)
现象
adb devices
显示设备状态为 unauthorized
。
解决步骤:
- 重启模拟器,等待弹出「允许 USB 调试」弹窗,点击「确定」。
- 若未弹窗,执行
adb kill-server
后重新连接设备。
三、成功连接后的操作流程
验证设备连接:执行
adb devices
,确保设备状态为device
(如emulator-5554 device
)。启动 weditor:
bash
python -m weditor
浏览器访问
http://127.0.0.1:17310
,在设备输入框中填写emulator-5554
,点击Connect
。分析界面元素:点击左侧模拟器界面中的元素,右侧会显示其属性(如
resourceId
、text
),直接复制生成的代码到自动化脚本中使用。
四、总结
- 核心前提:确保 ADB 能识别设备(
adb devices
有输出),模拟器开启 USB 调试。 - weditor 启动:优先用
python -m weditor
,端口冲突时换端口,进程残留时手动清理。 - 版本兼容:遇到属性错误时,通过修改源码或降级依赖版本解决。