Найти в Дзене

Как тестировать, скриншотить и скрапить веб-страницы с помощью headlesschrome?

Headlesschrome - это режим работы браузера Chrome без графического интерфейса, то есть без отображения окон и вкладок. Это позволяет запускать браузер в фоновом режиме и управлять им программно. Headlesschrome имеет все возможности обычного Chrome, включая поддержку современных веб-технологий и движка Blink. Headlesschrome может быть полезен для разных целей, например: Как запустить headlesschrome? Для запуска headlesschrome необходимо иметь установленный браузер Chrome версии 59 или выше. Затем нужно запустить браузер с флагом --headless, например: chrome \\\\
--headless \\\\ # Запускает Chrome в headless режиме.
--disable-gpu \\\\ # Временно необходимо для работы на Windows.
--remote-debugging-port=9222 \\\\ # Порт для удаленной отладки.
<https://www.chromestatus.com> # URL для открытия. По умолчанию about:blank. Если вы используете Mac, вы можете создать удобные алиасы для разных версий Chrome, которые у вас установлены: alias chrome="/Applications/Google\\\\ Chrome.app/Cont
Оглавление

Headlesschrome - это режим работы браузера Chrome без графического интерфейса, то есть без отображения окон и вкладок. Это позволяет запускать браузер в фоновом режиме и управлять им программно. Headlesschrome имеет все возможности обычного Chrome, включая поддержку современных веб-технологий и движка Blink.

Headlesschrome может быть полезен для разных целей, например:

  • Автоматизированное тестирование веб-приложений
  • Создание скриншотов или PDF-файлов веб-страниц
  • Сбор данных с сайтов (веб-скрапинг)
  • Имитация действий пользователя на сайтах

Как запустить headlesschrome?

Для запуска headlesschrome необходимо иметь установленный браузер Chrome версии 59 или выше. Затем нужно запустить браузер с флагом --headless, например:

chrome \\\\
--headless \\\\ # Запускает Chrome в headless режиме.
--disable-gpu \\\\ # Временно необходимо для работы на Windows.
--remote-debugging-port=9222 \\\\ # Порт для удаленной отладки.
<https://www.chromestatus.com> # URL для открытия. По умолчанию about:blank.

Если вы используете Mac, вы можете создать удобные алиасы для разных версий Chrome, которые у вас установлены:

alias chrome="/Applications/Google\\\\ Chrome.app/Contents/MacOS/Google\\\\ Chrome"
alias chrome-canary="/Applications/Google\\\\ Chrome\\\\ Canary.app/Contents/MacOS/Google\\\\ Chrome\\\\ Canary"
alias chromium="/Applications/Chromium.app/Contents/MacOS/Chromium"

Какие есть возможности headlesschrome?

Headlesschrome поддерживает множество функций, которые можно активировать с помощью разных флагов командной строки. Например:

  • Вывод DOM-дерева страницы. Флаг --dump-dom выводит document.body.innerHTML в stdout:

chrome --headless --disable-gpu --dump-dom <https://www.chromestatus.com/>

  • Создание PDF-файла страницы. Флаг --print-to-pdf создает PDF-файл страницы:

chrome --headless --disable-gpu --print-to-pdf <https://www.chromestatus.com/>

  • Создание скриншота страницы. Флаг --screenshot делает скриншот страницы:

chrome --headless --disable-gpu --screenshot <https://www.chromestatus.com/>

Можно также указать размер окна браузера с помощью флага --window-size:

# Размер стандартного листа.
chrome --headless --disable-gpu --screenshot --window-size=1280,1696 <https://www.chromestatus.com/>

# Nexus 5x
chrome --headless --disable-gpu --screenshot --window-size=412,732 <https://www.chromestatus.com/>

Как управлять headlesschrome программно?

Для программного управления headlesschrome можно использовать разные инструменты и библиотеки, которые поддерживают протокол удаленной отладки Chrome. Например:

  • Puppeteer - это библиотека для Node.js, которая предоставляет высокоуровневый API для управления headlesschrome. С помощью Puppeteer можно делать такие вещи, как:

Генерировать скриншоты и PDF-файлы страниц
Автоматизировать формы и сценарии тестирования
Захватывать покрытие кода и производительность
Эмулировать разные устройства и сетевые условия

  • ChromeDriver - это инструмент для автоматизации веб-приложений, который поддерживает стандарт WebDriver. С помощью ChromeDriver можно управлять headlesschrome через разные языки программирования, такие как Java, Python, Ruby и другие.

Какие есть новости в headlesschrome?

В 2023 году команда Chrome объявила о новом режиме headlesschrome, который называется --headless=new. В этом режиме Chrome создает, но не отображает платформенные окна. Все остальные функции, существующие и будущие, доступны без ограничений.

Новый режим headlesschrome решает проблему старого режима, который был отдельной реализацией браузера и имел свои ошибки и особенности, которые не были присутствовать в обычном режиме Chrome. Это создавало путаницу и несоответствие при автоматизированном тестировании.

Для запуска нового режима headlesschrome необходимо передать флаг --headless=new:

chrome --headless=new

Пока что старый режим headlesschrome все еще доступен через флаг --headless=old:

chrome --headless=old

Сейчас, если передать флаг --headless без явного значения, то активируется старый режим headlesschrome - но планируется изменить это поведение на новый режим по умолчанию.