appium+python自动化63-使用Uiautomator2报错问题解决

前言

appium desktop V1.7.1版本使用命令行版本启动appium后,使用Uiautomator2定位toast信息报错:appium-uiautomator2-server-v0.3.0.apk does not exist or is not accessible
主要原因是缺少appium-uiautomator2-server-v0.3.0.apk这个apk文件

问题分析

打开cmd启动命令行版本,appium V1.7.1

1070438-20190510233052771-2133644425.png

使用Uiautomator2定位toast信息

from appium import webdriver

desired_caps = {
                "platformName": "Android",
                "deviceName": "emulator-5554",     # 设备名称
                "platformVersion": "5.1.1",     # android系统版本号
                "appPackage": "com.yipiao",   # app包名
                "appActivity": "com.yipiao.activity.LaunchActivity",   # 启动launch Activity
                "noReset": True,  # 不清空数据
                'automationName': 'Uiautomator2'              # 使用Uiautomator2
                }
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

运行代码报错信息如下:

selenium.common.exceptions.WebDriverException:Message: An unknown server-side error occurred while processing the command.
Original error: The file at path C:\Users\dell\AppData\Roaming\npm\node_modules\appium\node_modules _appium-uiautomator2-driver@0.11.0@appium-uiautomator2-driver\uiautomator2\appium-uiautomator2-server-v0.3.0.apk
does not exist or is not accessible

分析问题原因

从报错信息看出,uiautomator2路径下找不到appium-uiautomator2-server-v0.3.0.apk这个文件,于是顺着报错给的路径查看该目录

1070438-20190510233541262-207405810.png

会发现_appium-uiautomator2-driver@0.11.0@appium-uiautomator2-drive 目录(或者appium-uiautomator2-driver目录)下找不到uiautomator2这个文件

之后用appium desktop v1.2.6桌面版appium server V1.7.1却是正常的,去appium-uiautomator2-driver/uiautomator2目录可以看到有2个apk文件
(桌面版完整路径:C:\Users\dell\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-uiautomator2-driver\uiautomator2)

1070438-20190510234244133-1636590368.png

于是会发现命令行版本有个坑,少了这2个文件

解决问题

解决办法就是去下载到这两个文件,放到对应目录,重新启动appium就可以了,github下载地址:https://github.com/appium/appium-uiautomator2-server/releases/tag/v0.3.0

1070438-20190510234417655-858652672.png

在appium-uiautomator2-driver下新建一个uiautomator2目录,把下载的2个apk放进去就可以了

桌面版完整地址:C:\Users\dell\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-uiautomator2-driver\uiautomator2
命令行版本完整地址:C:\Users\dell\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\uiautomator2

不会下载的,去QQ群:779429633 群文件下载

转载于:https://www.cnblogs.com/yoyoketang/p/10847305.html

使用 `uiautomator2` 初始化过程中,若遇到 `uiautomator2.exceptions.InputIMEError: install AdbKeyboard ime failed` 错误,通常表示在安装 AdbKeyboard 输入法时出现了问题。以下是可能的原因及对应的解决方案: ### 常见原因及解决方案 #### 1. 设备未正确连接或未授权 ADB 调试 确保设备已通过 USB 正确连接,并且 ADB 调试权限已授权。可以通过运行 `adb devices` 命令检查设备是否被识别。 ```bash adb devices ``` 如果设备未显示或显示为 `unauthorized`,请断开并重新连接设备,并确认是否弹出授权提示。 #### 2. ADB 版本不兼容或未启动 ADB 服务 确保使用的是最新版本的 ADB 工具,并尝试手动启动 ADB 服务: ```bash adb kill-server adb start-server ``` 然后重新运行初始化命令: ```bash python -m uiautomator2 init ``` #### 3. AdbKeyboard APK 文件缺失或损坏 `uiautomator2` 依赖于 `AdbKeyboard.apk` 来实现输入法功能。如果该文件缺失或损坏,会导致安装失败。可以尝试手动下载并安装 AdbKeyboard: ```bash adb install -r path/to/AdbKeyboard.apk ``` 如果不确定 APK 文件路径,可以通过以下命令查: ```bash find ~/.uiautomator2 -name "AdbKeyboard.apk" ``` #### 4. 设备上已存在冲突的输入法 如果设备上已有其他调试输入法(如前一次安装的 AdbKeyboard),可能会导致冲突。可以通过以下命令卸载已存在的 AdbKeyboard: ```bash adb shell pm uninstall --user 0 io.appium.android.ime ``` 然后重新运行初始化命令: ```bash python -m uiautomator2 init ``` #### 5. 设备权限不足或未开启开发者选项 确保设备已启用开发者选项,并且 USB 调试模式已开启。部分设备还需要手动启用“USB 调试(安全设置)”或“通过 USB 安装应用”等选项。 #### 6. 使用代理或网络问题导致下载失败 如果 `uiautomator2` 自动下载依赖时遇到网络问题,可以尝试设置代理或手动下载所需文件。例如,设置 ADB 代理: ```bash adb kill-server set http_proxy=http://your.proxy.server:port adb start-server ``` #### 7. 更新 `uiautomator2` 到最新版本 旧版本的 `uiautomator2` 可能存在兼容性问题。建议升级到最新版本: ```bash pip install --upgrade uiautomator2 ``` ### 示例命令 以下是一个完整的修复流程示例: ```bash # 检查设备连接 adb devices # 卸载已存在的 AdbKeyboard adb shell pm uninstall --user 0 io.appium.android.ime # 手动安装 AdbKeyboard adb install -r ~/.uiautomator2/cache/AdbKeyboard.apk # 重新初始化 uiautomator2 python -m uiautomator2 init ``` ### 注意事项 - 确保设备电池电量充足,避免在操作过程中因电量不足导致中断。 -使用的是模拟器,请确认其支持 ADB 并且已正确配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值