此错误消息...
selenium.common.exceptions.WebDriverException: Message: GET /session/bbb48fc8-51ba-4cff-b639-771f80489785/window/rect did not match a known command
...暗示/session/{session id}/window/rect端点上的GET方法,即Get Window Rect failed。
获取窗口位置
get_window_position()获取当前窗口的 x,y 位置。
注意:支持 W3C 兼容浏览器。
我在我的Windows 8机器上使用了您自己的代码,如下所示:
from selenium import webdriver
url = 'https://www.google.com'
driver = webdriver.Firefox()
driver.get(url)
print(driver.get_window_position())
但无法重现错误/问题。
然而,此时值得一提的是,不同的浏览器客户端以不同的方式呈现 HTML。您可以在Chrome & Firefox on Windows vs Linux (selenium)中找到相关讨论。
根据您的测试配置,客户端(即Web 浏览器)有可能在端点 建立之前将控件返回给WebDriver实例,即“document.readyState”等于“完成” 。/session/{session id}/window/rect
解决方案
在尝试提取window_position之前诱导WebDriverWait,如下所示:
代码块:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://www.google.com'
driver = webdriver.Firefox()
driver.get(url)
WebDriverWait(driver, 10).until(EC.title_contains("Google"))
print(driver.get_window_position())
控制台输出:
{'x': -8, 'y': -8}