selenium.common.exceptions.WebDriverException:消息:GET /session/.../window/rect与带有get_window_position()的已知命令不匹配

时间:2018-12-10 18:33:27

标签: python selenium selenium-webdriver webdriverwait webdriver-w3c-spec

当我运行这段代码

url = 'https://www.google.com'
driver = webdriver.Firefox()
driver.get(url)
print(driver.get_window_position())'

我收到此错误

selenium.common.exceptions.WebDriverException: Message: GET /session/bbb48fc8-51ba-4cff-b639-771f80489785/window/rect did not match a known command

错误似乎出在get_window_position()方法中。有想法吗?

1 个答案:

答案 0 :(得分:0)

此错误消息...

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 endpoint 上的 GET 方法,即{{3 }} 失败


get_window_position

Get Window Rect获取当前窗口的x,y位置。

  • 用法:

    driver.get_window_position()
    
  

注意:受W3C兼容浏览器支持。

我在 Windows 8 框中使用了自己的代码,如下所示:

from selenium import webdriver

url = 'https://www.google.com'
driver = webdriver.Firefox()
driver.get(url)
print(driver.get_window_position())

但无法重现错误/问题。


但是,在这一点上,值得一提的是,不同的浏览器客户端以不同的方式呈现HTML 。您可以在get_window_position()中找到相关的讨论。

根据您的测试配置 客户端(即 Web浏览器),可以将控件返回给 WebDriver 实例,即在建立/session/{session id}/window/rect 端点之前的'document.readyState'等于“完成”

解决方案

在尝试按以下方式提取 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}