python+uiautomator2+adb_环境搭建

张开发
2026/4/10 10:01:11 15 分钟阅读

分享文章

python+uiautomator2+adb_环境搭建
uiautomator2是基于google uiautomator的安卓UI自动化框架支持python编写测试脚本对设备进行自动化控制。原理是在设备上运行http服务器将http接口封装成python库uiautomator只能使用java语言每次都要上传到设备上运行uiautomator2可以实现所见即所得的测试环境搭建1、前置条件已安装python及adb环境2、安装uiautomator2pip install-U uiautomator23、连接安卓设备设备需开启开发者选项开放权限# 检查设备是否已连接adb devices4、安卓设备安装ATX并进行初始化init指令向设备推送并安装 ATX 所需的服务组件执行一次就完成初始化重复执行会检测已安装版本不会报错。# 自动识别当前连接的单个设备从默认源下载并安装 ATX 相关服务python-m uiautomator2 init# 使用国内镜像源下载速度更快解决国内网络下载失败问题仅初始化指定序列号的具体设备python-m uiautomator2 init--mirror--serial $SERIAL初始化内容安装minicap、minitouch、atx-agent启动atx-agent负责屏幕显示、屏幕控制、监控uiautomator2的运行[I24013016:49:38init:156]uiautomator2 version:2.16.25[I24013016:49:38init:373]Install minicap,minitouch......[I24013016:49:38init:391]Already installed com.github.uiautomator apks......[I24013016:49:39init:350]Check atx-agent version5、安装weditorpip install-U weditor6、打开weditorpython-m weditor# 或weditor7、连接设备选择对应系统输入设备序列号进行连接开启实时刷新。左侧可以看到设备实时页面中间是定位元素的信息右侧是自动生成的代码区、代码运行、控制台日志等。问题及解决方法ATX初始化失败python-m uiautomator2 init在浏览器打开网址可以看到报错403这是因为网络限制无法访问该地址解决方法是避开内网限制1、设置外网2、设备开启USB网络共享给PC提供网络3、笔电连接可访问外网的网络python-m uiautomator2 init--mirror--serial $SERIAL# 出现以下报错时去掉--mirrorusage:__main__.py[-h][-d][-s SERIAL]{version,init,screenshot,identify,install,uninstall,healthcheck,check,start,stop,current,doctor,console,purge}...__main__.py:error:unrecognized arguments:--mirror# $SERIAL要改成adb devices查询到的序列号......FileD:\Program Files (x86)\python\lib\site-packages\adbutils\_adb.py,line134,incheck_okayraiseAdbError(self.read_string_block())adbutils.errors.AdbError:device$SERIALnotfoundweditor安装失败如果出现连接失败等问题可以考虑指定weditor版本# 卸载旧版本pip uninstall-y weditor# 指定安装版本pip install weditor0.6.4AttributeError: ‘Device’ object has no attribute ‘address’AttributeError:Deviceobjecthas no attributeaddressuiautomator2和weditor版本不匹配新版 uiautomator2 删掉了 address 属性旧版 weditor不兼容导致给uiautomator2降级重新初始化pip install uiautomator22.10.2pip install weditor0.6.4python-m uiautomator2 init python-m weditorAttributeError: ‘MockStdout’ object has no attribute ‘flush’AttributeError:MockStdoutobjecthas no attributeflush根据python安装路径找到…\Python\Python38\Lib\site-packages\weditor\web\ipyshell-console.py在文件中添加defflush(self)_stdout.flush()WEditor 加载不出画面或者无法实时同步手机端「急救操作」彻底关闭 ATX 应用在手机「最近任务」里上滑彻底杀掉 ATX重新打开 ATX手动点击 ATX 图标允许所有权限悬浮窗、后台运行、屏幕录制、存储关闭电池优化设置 → 应用 → ATX → 电池 → 选择「无限制 / 不优化」保持 ATX 前台运行不要把 ATX 切到后台先开着再刷新 WEditor电脑端「一键重置服务」在 CMD 里执行这 4 行强制重置 ATX 截图服务# 1. 杀死旧服务adb kill-server# 2. 重启 ADBadb start-server# 3. 重新推送 ATXpython-m uiautomator2 init# 4. 启动 weditorweditor执行完后手机会自动重装 ATX一定要在手机上点「安装 / 允许」第三步WEditor 端「强制修复」关闭所有 WEditor 浏览器标签页彻底清空缓存清楚浏览器cookies连接设备后先点「静态」再切「实时」不要直接开实时如果还是空白点右上角「Dump Hierarchy」手动拉取一次画面

更多文章