0

当我运行这段代码

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()方法中。任何想法?

4

1 回答 1

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端点上的GET方法,即Get Window Rect failed


获取窗口位置

get_window_position()获取当前窗口的 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您可以在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}
    
于 2018-12-11T08:25:19.247 回答