selenium.common.exceptions.WebDriverException: Сообщение: GET /session/.../window/rect не соответствует известной команде с get_window_position()

Когда я запускаю этот код

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 ответ

Это сообщение об ошибке...

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

... подразумевает, что метод GET для конечной точки /session/{идентификатор сеанса}/window/rect, т.е. Get Window Rect, не выполнен.


get_window_position

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 на Windows против Linux (селен).

Возможно, согласно вашей тестовой конфигурации, клиент (т. Е. Веб-браузер) вернул элемент управления экземпляру WebDriver, т. Е. Document.readyState, равному "complete" до /session/{session id}/window/rect конечная точка была установлена.

Решение

Вызовите WebDriverWait, прежде чем пытаться извлечь window_position следующим образом:

  • Блок кода:

    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}
    
Другие вопросы по тегам