Как свернуть окно браузера с селеном?
Я прочитал несколько вопросов, связанных с минимизацией, используя Selenium, но нигде в их документации не говорится, как взаимодействовать с окном, которое было свернуто. Если вы попытаетесь запустить функции set_window_size() или maximize_window() в драйвере после сворачивания браузера, Selenium выдает исключение, сообщающее, что состояние окна недопустимо для этих операций. Мне трудно поверить, что, свернув окно, вы больше не сможете управлять браузером. Кто-нибудь делал это?
РЕДАКТИРОВАТЬ: Вот мой код:
self.driver.minimize_window()
self.driver.maximize_window()
И вот след, который я вижу:
Traceback (most recent call last):
...
self.browser.maximize_window()
File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 737, in maximize_window
self.execute(command, params)
File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: failed to change window state to normal, current state is minimized
(Session info: chrome=70.0.3538.77)
(Driver info: chromedriver=2.41,platform=Linux 4.15.0-39-generic x86_64)
2 ответа
У меня тоже была эта пробема.
Вы должны хранить
driver.current_window_handle
в качестве переменной до минимизации. Затем используйте
driver.switch_to.window
чтобы переключиться на это окно.
Перейдите по этой ссылке, чтобы прочитать более подробную информацию:Как развернуть окно селена?
Нашел ответ при просмотре логов коммитов: https://github.com/w3c/webdriver/commit/1e1e590542da97f64cf58268940f88aec5ad6697
Решение состоит в том, чтобы вызвать set_window_rect() в драйвере. Это восстановит состояние окна после сворачивания, увеличения или перехода в полноэкранный режим.
РЕДАКТИРОВАТЬ: большая проблема здесь в том, что веб-драйвер, который я использую, не совместим с w3c. Вышеуказанное будет работать только с веб-драйверами w3c.