הפניה לשורת הפקודות של Headless Chrome

Peter Kvitek
Peter Kvitek

הדגלים הבאים של שורת הפקודה זמינים במצב Headless וב-Headless shell.

--dump-dom

הדגל --dump-dom מדפיס את ה-DOM הסריאלי של דף היעד ל-stdout. לדוגמה:

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