перейти к содержанию

Как делать скриншоты с помощью Selenium

Selenium — популярный инструмент автоматизации браузера, используемый для очистки веб-страниц, тестирования и многого другого. Одна из полезных функций, которую он предоставляет, — это возможность делать снимки экрана веб-страниц во время автоматизации. Вот подробный обзор того, как делать снимки экрана на уровне всей страницы и элемента с помощью Selenium в Python.

Введение в создание снимков экрана с помощью Selenium

Основные причины, по которым вы можете захотеть делать снимки экрана с помощью Selenium, включают:

  • Сохранение копий веб-страниц, которые вы очистили или с которыми взаимодействовали, для отладки или записи.
  • Захват динамического контента, такого как информация о дате/времени или реклама, для последующего анализа.
  • Проверка проблем с макетом в браузерах и на устройствах
  • Документирование шагов и состояний рабочего процесса в автоматических тестах.
  • Делаем скриншоты изображений капчи для их автоматического решения.

Selenium поддерживает создание снимков экрана как полных веб-страниц, так и отдельных элементов на странице. Это обеспечивает большую гибкость, позволяя запечатлеть именно то, что вам нужно.

Настройка Selenium и открытие браузера

Чтобы начать, нам сначала нужно импортировать Selenium и создать экземпляр объекта WebDriver для управления браузером. В примере ниже показано открытие Chrome:

from selenium import webdriver

driver = webdriver.Chrome()

Другие браузеры, такие как Firefox и Edge, работают аналогично. Когда объект драйвера готов, мы можем перейти на веб-страницу и сделать снимок экрана:

driver.get("https://example.com")

Создание полных снимков экрана

Самый простой способ сделать снимок всего содержимого окна браузера — использовать save_screenshot().

Передайте ему путь к файлу, чтобы сохранить изображение непосредственно на диск:

driver.save_screenshot(‘example_screenshot.png‘)

Кроме того, вы можете получить снимок экрана в виде байтов PNG в памяти или строки в кодировке Base64:

screenshot_png = driver.get_screenshot_as_png()
screenshot_b64 = driver.get_screenshot_as_base64() 

Это позволяет, например, сохранить снимок экрана в базе данных или отправить его по HTTP.

Создание скриншотов элементов

Чтобы сделать скриншоты определенного элемента на странице, а не во весь экран, сначала нужно найти элемент, используя локатор, такой как селектор CSS или XPath:

element = driver.find_element(By.ID, ‘main-content‘)

Тогда позвони .screenshot() в WebElement, чтобы захватить только эту часть страницы:

element_shot = element.screenshot(‘element.png‘)

Как и в случае с полными скриншотами, вы также можете получить байты или строку Base64.

Советы по созданию надежных снимков экрана

Вот несколько советов по созданию точных и полезных снимков экрана с помощью Selenium:

  • Подождите, пока страницы полностью загрузятся, прежде чем делать снимки экрана, чтобы не фиксировать состояния в середине загрузки.
  • При необходимости прокрутите элементы в поле зрения, прежде чем делать снимки экрана.
  • Следите за рекламой и динамическим контентом, меняющимся между кадрами.
  • Делайте снимки экрана мобильных устройств, изменяя размер окна браузера или используя эмуляцию мобильных устройств.
  • Безголовые браузеры, такие как PhantomJS, могут делать снимки экрана, но могут пропускать некоторый контент.

Варианты использования скриншотов Selenium

Несколько примеров того, как вы можете использовать скриншоты Selenium в своих проектах по очистке веб-страниц и автоматизации:

  • Отладка и журналирование — сравните снимки экрана до и после, чтобы увидеть изменения.
  • Захват сгенерированного или чувствительного ко времени контента, например информационных панелей.
  • Автоматизированное визуальное регрессионное тестирование в разных версиях браузера.
  • Документирование рабочего процесса и состояния во время тестовых запусков.
  • Скриншоты капч для передачи в сервис решения.
  • Архивирование очищенных данных страницы вместе со скриншотами.

Подведение итогов и дальнейшие шаги

Чтобы сделать снимки экрана с помощью Selenium в Python, выполните следующие действия:

  1. Импортируйте Selenium и создайте WebDriver
  2. Перейдите на целевую веб-страницу
  3. Позвонить save_screenshot() чтобы захватить всю страницу
  4. Или найдите элемент и вызовите screenshot() чтобы захватить только этот элемент
  5. При необходимости настройте динамические страницы и мобильные устройства.

Я надеюсь, что это руководство даст вам хорошую основу для создания снимков экрана в вашем собственном проекте Selenium! Возможности безграничны.

Теги:

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *