В режиме без графического интерфейса и в оболочке без графического интерфейса доступны следующие флаги командной строки.
--dump-dom
Флаг --dump-dom выводит сериализованный DOM целевой страницы в стандартный поток вывода. Например:
chrome --headless --dump-dom https://developer.chrome.com/
Это отличается от вывода исходного HTML-кода, который можно получить с помощью curl . Чтобы получить вывод команды --dump-dom , Chrome сначала анализирует HTML-код, преобразуя его в DOM, выполняет любой <script> , который может изменить DOM, а затем преобразует этот DOM обратно в сериализованную строку HTML.
--screenshot
Флаг --screenshot делает снимок экрана целевой страницы и сохраняет его как screenshot.png в текущем рабочем каталоге. Это особенно полезно в сочетании с флагом --window-size .
Например:
chrome --headless --screenshot --window-size=412,892 https://developer.chrome.com/
--print-to-pdf
Флаг --print-to-pdf сохраняет целевую страницу в формате PDF с именем output.pdf в текущем рабочем каталоге. Например:
chrome --headless --print-to-pdf https://developer.chrome.com/
При желании можно добавить флаг --no-pdf-header-footer чтобы опустить заголовок (с текущей датой и временем) и нижний колонтитул (с URL-адресом и номером страницы) для печати.
chrome --headless --print-to-pdf --no-pdf-header-footer https://developer.chrome.com/
--timeout
Флаг --timeout определяет максимальное время ожидания (в миллисекундах), по истечении которого содержимое страницы будет сохранено с помощью параметров --dump-dom , --screenshot и --print-to-pdf даже если страница еще загружается.
chrome --headless --print-to-pdf --timeout=5000 https://developer.chrome.com/
Флаг --timeout=5000 указывает Chrome подождать до 5 секунд перед печатью PDF-файла. Таким образом, этот процесс занимает не более 5 секунд.
--virtual-time-budget
Параметр --virtual-time-budget действует как "ускоренная перемотка" для любого кода, зависящего от времени (например, setTimeout / setInterval ). Он заставляет браузер выполнять любой код страницы как можно быстрее, создавая у страницы впечатление, что время действительно идет.
Для иллюстрации его использования рассмотрим этот пример, который увеличивает, записывает и отображает счетчик каждую секунду с помощью setTimeout(fn, 1000) . Вот соответствующий код:
<output>0</output>
<script>
const element = document.querySelector('output');
let counter = 0;
setInterval(() => {
counter++;
console.log(counter);
element.textContent = counter;
}, 1_000);
</script>
Через одну секунду на странице отобразится «1»; через две секунды — «2» и так далее. Вот как можно зафиксировать состояние страницы через 42 секунды и сохранить его в формате PDF:
chrome --headless --print-to-pdf --virtual-time-budget=42000 https://mathiasbynens.be/demo/time
--allow-chrome-scheme-url
Для доступа к URL-адресам с префиксом chrome:// необходим флаг --allow-chrome-scheme-url . Этот флаг доступен начиная с Chrome 123. Вот пример:
chrome --headless --print-to-pdf --allow-chrome-scheme-url chrome://gpu