1、报错内容
(1)脚本报错内容
在PyCharm编写好脚本后,模拟器和appium也是连接成功的,但是运行脚本时报错:
selenium.common.exceptions.WebDriverException: Message: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource
(2)Appium返回的日志内容
[HTTP] Request idempotency key: d0xxxx26-XXXX-XXXX-XXXX-8b47xxxx48da
[HTTP] --> POST /wd/hub/session {"capabilities":{"firstMatch":[{}],"alwaysMatch":{"platformName":"Android","appium:platformVersion":"7.1.2","appium:deviceName":"SM_G9810","appium:appPackage":"com.android.browser","appium:appActivity":"BrowserActivity","appium:unicodeKeyboard":true,"appium:resetKeyboard":true,"appium:noReset":true,"appium:newCommandTimeout":6000,"appium:automationName":"UiAutomator2"}}}
[HTTP] No route found for /wd/hub/session
[HTTP] <-- POST /wd/hub/session 404 8 ms - 211
2、解决方案
(1)检查思路
从运行python脚本返回的报错内容来看,通常是表示请求的 URL 路径不正确,或者请求的 HTTP 方法不符合该路径的要求,我们可能通过以下三点进行排查:
- 检查URL路径是否正确
- 检查Appium服务器是否正常运行
- 查看appium的日志信息
查看appium的日志,可以看到错误的关键在于这条
[HTTP] No route found for /wd/hub/session
这是表示 Appium 服务器无法找到请求的资源(即无法处理 /wd/hub/session
这个 API 路径) ,而一般会因为以下几点原因导致的这个问题出现:
- API路径是否正确
- Appium 服务器是否正常运行:确保你的 Appium 服务器正在运行,且没有其它进程占用了 4723 端口。可以通过浏览器访问 http://127.0.0.1:4723/ 查看 Appium 服务器状态。
- 设备状态:确保你的 Android 设备已经通过 USB 调试连接到计算机,并且可以通过命令 adb devices 看到该设备。
- 缺少插件:了解 Appium 2.x 需要通过插件运行不同的驱动程序,如果 Appium 的 uiautomator2 驱动没有正确安装或未激活,可能会导致错误。确保已正确安装并激活 Astion 和其他必须的驱动。
(2)报错原因
其实到这一步,我们已经多次看到在重复强调一个问题了,就是URL路径错误可能是最大的原因,然后我就去了解了一下,