Управление окнами и создание снимков экрана
В предыдущем посте мы рассмотрели управление действиями мыши. В этом посте мы увидим, как управлять положением и размерами окна, а также сделаем скриншоты.
В части 6 этой серии мы изучили дескрипторы окон и переключение между окнами. Этот пост в основном завершает обсуждение, связанное с окном.
Управление окнами
Разрешение экрана может влиять на отображение веб-приложений, поэтому Selenium WebDriver предоставляет механизмы для перемещения и изменения размера окна браузера.
получить / установить размер окна
get_window_size
извлекает размер окна браузера в пикселях в виде словаря с ключами width и height.
width = driver.get_window_size().get("width") height = driver.get_window_size().get("height")
set_window_size
восстанавливает окно и устанавливает размер окна, как показано ниже.
driver.set_window_size(1024, 768)
POST-запрос делается к /session/:sessionId/window/:windowHandle/size
конечной точке с параметрами ширины и высоты в теле запроса.
получить / установить позицию окна
Эти методы используются для получения текущей позиции окна или перемещения окна в заданную позицию.
# move the window to the top left of the primary monitor driver.set_window_position(0, 0)
В следующем примере сначала устанавливается размер окна 600 пикселей в ширину и 300 пикселей в высоту, затем изменяется вертикальное положение окна на 300 пикселей от верха и перемещается в крайнее левое положение, устанавливая координату x равной 0.
развернуть / полноэкранное окно
Метод maximize_window
увеличивает окно. Для большинства операционных систем окно заполняет экран, не блокируя собственные меню и панели инструментов операционной системы.
driver.maximize_window()
Метод fullscreen_window
заполняет весь экран, аналогично нажатию F11.
driver.fullscreen_window()
Как сделать снимок экрана
Мы можем сделать снимок экрана окна или определенного элемента на странице с помощью Selenium.
Окно
Снимок экрана окна используется для создания снимков экрана для текущего контекста просмотра.
Вы можете использовать методы get_screenshot_as_file
или save_screenshot
, чтобы сохранить снимок экрана текущего окна в файл изображения PNG. Если вы хотите получить результат скриншота в виде двоичных данных, вы можете использовать метод get_screenshot_as_png
. Если вы хотите получить его как строку base64, которая больше подходит для использования во встроенных изображениях в HTML, вы можете использовать метод get_screenshot_as_base64
.
В следующем примере снимок экрана домашней страницы сохраняется в файл home_page.png.
Элемент
Это используется для создания снимка экрана элемента для текущего контекста просмотра.
Вы можете сохранить снимок экрана элемента в формате PNG с помощью метода screenshot
. Если вы хотите получить результат скриншота в виде двоичных данных или строки base64, вы можете использовать методы get_screenshot_as_png
и get_screenshot_as_base64
, как на скриншотах окон. Вместо экземпляра WebDriver на этот раз следует вызвать методы экземпляра WebElement.
В следующем примере сохраняется только раздел ссылок на странице.
То, что нужно запомнить
- Selenium WebDriver предоставляет механизмы для перемещения и изменения размера окна браузера.
- Методы
get_window_size
иset_window_size
используются для запроса и изменения размеров окна. - Методы
get_window_position
иset_window_position
используются для получения текущей позиции окна и перемещения окна к указанным координатам. - Метод
maximize_window
увеличивает окно до размера экрана, не блокируя собственные меню и панели инструментов операционной системы. - Метод
fullscreen_window
заполняет весь экран, аналогично нажатию F11. - Selenium предоставляет методы для создания снимка экрана окна или определенного элемента на странице.
- Вы можете просто использовать методы
get_screenshot_as_file
илиsave_screenshot
для окон и методscreenshot
для элементов, чтобы сохранить их снимки экрана в файл изображения PNG.
В следующем посте мы увидим объектную модель страницы, которая поможет лучше структурировать код.
Спасибо за уделенное время.
использованная литература
- Https://www.selenium.dev/documentation/en/webdriver/browser_manipulation/#window-management
- Https://www.lambdatest.com/blog/python-selenium-screenshots/
- Https://github.com/SeleniumHQ/selenium/blob/trunk/py/selenium/webdriver/remote/webdriver.py
- Https://github.com/SeleniumHQ/selenium/blob/trunk/py/selenium/webdriver/remote/webelement.py