Dokumentacja wiersza poleceń Chrome bez interfejsu graficznego

Peter Kvitek
Peter Kvitek

W trybie bez interfejsu graficznego i w powłoce bez interfejsu graficznego dostępne są te flagi wiersza poleceń:

--dump-dom

Flaga --dump-dom drukuje w stdout serializowany DOM strony docelowej. Na przykład:

chrome --headless --dump-dom https://developer.chrome.com/

Różni się to od drukowania kodu źródłowego HTML, które można wykonać za pomocą curl. Aby uzyskać dane wyjściowe --dump-dom, Chrome najpierw analizuje kod HTML do postaci DOM, wykonuje wszystkie elementy <script>, które mogą zmienić DOM, a następnie przekształca ten DOM z powrotem w serializowany ciąg HTML.

--screenshot

Flaga --screenshot robi zrzut ekranu strony docelowej i zapisuje go jako screenshot.png w bieżącym katalogu roboczym. Jest to szczególnie przydatne w połączeniu z flagą --window-size.

Na przykład:

chrome --headless --screenshot --window-size=412,892 https://developer.chrome.com/

--print-to-pdf

Flaga --print-to-pdf zapisuje stronę docelową jako plik PDF o nazwie output.pdf w bieżącym katalogu roboczym. Na przykład:

chrome --headless --print-to-pdf https://developer.chrome.com/

Opcjonalnie możesz dodać flagę --no-pdf-header-footer, aby pominąć nagłówek (z bieżącą datą i godziną) oraz stopkę (z adresem URL i numerem strony).

chrome --headless --print-to-pdf --no-pdf-header-footer https://developer.chrome.com/

--timeout

Flaga --timeout określa maksymalny czas oczekiwania (w milisekundach), po którym zawartość strony jest przechwytywana przez --dump-dom, --screenshot i --print-to-pdf, nawet jeśli strona nadal się wczytuje.

chrome --headless --print-to-pdf --timeout=5000 https://developer.chrome.com/

Flaga --timeout=5000 nakazuje Chrome poczekać do 5 sekund przed wydrukowaniem pliku PDF. Dlatego ten proces trwa co najwyżej 5 sekund.

--virtual-time-budget

Flaga --virtual-time-budget działa jak „przewijanie do przodu” w przypadku kodu zależnego od czasu (np. setTimeout/setInterval). Wymusza na przeglądarce jak najszybsze wykonanie dowolnego kodu strony, jednocześnie sprawiając, że strona uważa, że czas rzeczywiście upływa.

Aby zilustrować jego użycie, rozważ ten przykład, który co sekundę zwiększa, rejestruje i wyświetla licznik za pomocą setTimeout(fn, 1000). Oto odpowiedni kod:

<output>0</output>
<script>
  const element = document.querySelector('output');
  let counter = 0;
  setInterval(() => {
    counter++;
    console.log(counter);
    element.textContent = counter;
  }, 1_000);
</script>

Po sekundzie strona zawiera „1”, po 2 sekundach „2” itd. Oto jak możesz przechwycić stan strony po 42 sekundach i zapisać go jako plik PDF:

chrome --headless --print-to-pdf --virtual-time-budget=42000 https://mathiasbynens.be/demo/time

--allow-chrome-scheme-url

Flaga --allow-chrome-scheme-url jest wymagana do uzyskiwania dostępu do adresów URL chrome://. Ta flaga jest dostępna od Chrome 123. Oto przykład:

chrome --headless --print-to-pdf --allow-chrome-scheme-url chrome://gpu