Documentation de référence sur la ligne de commande Chrome Headless

Peter Kvitek
Peter Kvitek

Les options de ligne de commande suivantes sont disponibles en mode sans interface graphique et dans l'interface Headless.

--dump-dom

L'option --dump-dom affiche le DOM sérialisé de la page cible sur la sortie standard. Exemple :

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

Cela est différent de l'impression du code source HTML, que vous pouvez effectuer avec curl. Pour vous fournir le résultat de --dump-dom, Chrome analyse d'abord le code HTML dans un DOM, exécute tous les <script> qui peuvent modifier le DOM, puis transforme ce DOM en une chaîne HTML sérialisée.

--screenshot

L'option --screenshot prend une capture d'écran de la page cible et l'enregistre sous le nom screenshot.png dans le répertoire de travail actuel. Elle est particulièrement utile en combinaison avec l'option --window-size.

Exemple :

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

--print-to-pdf

L'option --print-to-pdf enregistre la page cible au format PDF sous le nom output.pdf dans le répertoire de travail actuel. Exemple :

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

Vous pouvez éventuellement ajouter l'option --no-pdf-header-footer pour omettre l'en-tête d'impression (avec la date et l'heure actuelles) et le pied de page (avec l'URL et le numéro de page).

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

--timeout

L'option --timeout définit le délai d'attente maximal (en millisecondes) après lequel le contenu de la page est capturé par --dump-dom, --screenshot et --print-to-pdf, même si la page est toujours en cours de chargement.

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

L'option --timeout=5000 indique à Chrome d'attendre jusqu'à 5 secondes avant d'imprimer le PDF. L'exécution de ce processus prend donc au maximum 5 secondes.

--virtual-time-budget

L'option --virtual-time-budget agit comme une "avance rapide" pour tout code dépendant du temps (par exemple, setTimeout/setInterval). Elle force le navigateur à exécuter le code de la page le plus rapidement possible tout en faisant croire à la page que le temps passe réellement.

Pour illustrer son utilisation, examinez cette démonstration, qui incrémente, enregistre et affiche un compteur toutes les secondes à l'aide de setTimeout(fn, 1000). Voici le code concerné :

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

Au bout d'une seconde, la page contient "1", au bout de deux secondes, "2", et ainsi de suite. Voici comment capturer l'état de la page après 42 secondes et l'enregistrer au format PDF :

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

--allow-chrome-scheme-url

L'option --allow-chrome-scheme-url est requise pour accéder aux URL chrome://. Elle est disponible depuis Chrome 123. Exemple :

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