Appium Appium 1.10.0版本 BUG:使用 get_window_size () 方法报错

现象

Appium 1.9版本使用driver.get_window_size()会报错,提示selenium.common.exceptions.WebDriverException: Message: The URL '/wd/hub/session/2763af95-8c0c-4533-8b73-0eae25e5a026/window/size' did not map to a valid resource

(在appium 1.4版本执行get_window_size方法没有问题,可以得到正确返回,应该是1.9版本的bug, 1.9版本改变了执行get_window_size方法对应的GET请求地址)

环境

Appium 1.10.0

Python 3.7

Selenium 3.3.1

Appium Log

[HTTP] --> GET /wd/hub/session/2763af95-8c0c-4533-8b73-0eae25e5a026/window/size

[HTTP] No route found. Setting content type to 'text/plain'

[HTTP] <-- GET /wd/hub/session/2763af95-8c0c-4533-8b73-0eae25e5a026/window/size 404 1 ms - 106

appium报错信息

解决方法:

通过查看官方文档和appium log得知,当执行driver.get_window_size()时,Python脚本通过向地址 “http://127.0.0.1:4723/wd/hub/session/:session_id/window/size” 发送get请求给appium-server,appium-server再发送命令给mobile获得mobile返回的window_size,然后返回给client。

查看官方文档:get_window_size方法的实际请求地址为: /wd/hub/session/:session_id/window/:window_handle/size

参考:http://appium.io/docs/en/commands/web/window/get-window-size/index.html#appium-clients

通过追踪selenium源码,发现在执行get_window_size时发送的请求URL为:

/session/$sessionId/window/size

源码路径:python-path\Lib\site-packages\selenium\webdriver\remote\remote_connection.py 

对比得知,selenium get_window_size方法请求的URL和appium执行get_window_size方法对应的路径不同,通过修改selenium源码变更get_window_size的请求路径为:

Command.W3C_GET_WINDOW_SIZE: ('GET', '/session/$sessionId/window/$windowHandle/size'),

结果

再次执行driver.get_window_size(),得到正确返回。

你可能感兴趣的:(Appium Appium 1.10.0版本 BUG:使用 get_window_size () 方法报错)