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(). Есть идеи?


person Javier    schedule 10.12.2018    source источник
comment
Обычно такие вещи, как `не соответствует известной команде`, возникают из-за несоответствия между версиями Selenium/webdriver/браузера. Обязательно обновите сельниум, geckodriver и Firefox до последней версии. Пожалуйста, обновите версии, которые вы используете.   -  person sytech    schedule 10.12.2018
comment
Это сработало для меня на моей локальной машине. Я думаю, что ваш селен нуждается в обновлении.   -  person Himanshu Poddar    schedule 11.12.2018


Ответы (1)


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

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

... подразумевает, что метод GET в /session/{session id}/window/rect endpoint, т. е. Получить прямоугольник ошибка.


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}
    
person DebanjanB    schedule 11.12.2018