Управление окнами и создание снимков экрана

В предыдущем посте мы рассмотрели управление действиями мыши. В этом посте мы увидим, как управлять положением и размерами окна, а также сделаем скриншоты.

В части 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.

В следующем посте мы увидим объектную модель страницы, которая поможет лучше структурировать код.

Спасибо за уделенное время.

использованная литература

  1. Https://www.selenium.dev/documentation/en/webdriver/browser_manipulation/#window-management
  2. Https://www.lambdatest.com/blog/python-selenium-screenshots/
  3. Https://github.com/SeleniumHQ/selenium/blob/trunk/py/selenium/webdriver/remote/webdriver.py
  4. Https://github.com/SeleniumHQ/selenium/blob/trunk/py/selenium/webdriver/remote/webelement.py