Befehlszeilenreferenz für den monitorlosen Modus in Chrome

Peter Kvitek
Peter Kvitek

Die folgenden Befehlszeilen-Flags sind im Headless-Modus und in der Headless-Shell verfügbar.

--dump-dom

Mit dem Flag --dump-dom wird das serialisierte DOM der Zielseite in die Standardausgabe ausgegeben. Beispiel:

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

Das ist anders als das Ausgeben des HTML-Quellcodes, was Sie mit curl tun könnten. Um die Ausgabe von --dump-dom zu erhalten, parst Chrome zuerst den HTML Code in ein DOM, führt alle <script> aus, die das DOM ändern könnten, und wandelt dieses DOM dann wieder in einen serialisierten HTML-String um.

--screenshot

Mit dem Flag --screenshot wird ein Screenshot der Zielseite erstellt und als screenshot.png im aktuellen Arbeitsverzeichnis gespeichert. Dies ist besonders nützlich in Kombination mit dem Flag --window-size.

Beispiel:

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

--print-to-pdf

Mit dem Flag --print-to-pdf wird die Zielseite als PDF-Datei mit dem Namen output.pdf im aktuellen Arbeitsverzeichnis gespeichert. Beispiel:

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

Optional können Sie das Flag --no-pdf-header-footer hinzufügen, um die Druckkopfzeile (mit dem aktuellen Datum und der aktuellen Uhrzeit) und die Fußzeile (mit der URL und der Seitenzahl) zu entfernen.

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

--timeout

Mit dem Flag --timeout wird die maximale Wartezeit (in Millisekunden) festgelegt, nach der der Inhalt der Seite von --dump-dom, --screenshot und --print-to-pdf erfasst wird, auch wenn die Seite noch geladen wird.

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

Das Flag --timeout=5000 weist Chrome an, bis zu 5 Sekunden zu warten, bevor das PDF gedruckt wird. Dieser Vorgang dauert also maximal 5 Sekunden.

--virtual-time-budget

Das Flag --virtual-time-budget fungiert als „Schnellvorlauf“ für zeitabhängigen Code (z. B. setTimeout/setInterval). Es zwingt den Browser, den Code der Seite so schnell wie möglich auszuführen, während die Seite davon ausgeht, dass die Zeit tatsächlich vergeht.

Zur Veranschaulichung sehen Sie sich diese Demo an, in der jede Sekunde ein Zähler erhöht, protokolliert und angezeigt wird mit setTimeout(fn, 1000). Hier ist der relevante Code:

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

Nach einer Sekunde enthält die Seite „1“, nach zwei Sekunden „2“ usw. So erfassen Sie den Status der Seite nach 42 Sekunden und speichern ihn als PDF:

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

--allow-chrome-scheme-url

Das Flag --allow-chrome-scheme-url ist erforderlich, um auf chrome://-URLs zuzugreifen. Dieses Flag ist ab Chrome 123 verfügbar. Beispiel:

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