แฟล็กบรรทัดคำสั่งต่อไปนี้ใช้ได้ในโหมด 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 วินาที หน้าจะมี "1" หลังจากผ่านไป 2 วินาทีจะมี "2" และอื่นๆ วิธีจับภาพสถานะของหน้าหลังจากผ่านไป 42 วินาทีและบันทึกเป็น PDF มีดังนี้
chrome --headless --print-to-pdf --virtual-time-budget=42000 https://mathiasbynens.be/demo/time
--allow-chrome-scheme-url
คุณต้องใช้แฟล็ก --allow-chrome-scheme-url เพื่อเข้าถึง URL chrome:// แฟล็กนี้ใช้ได้ตั้งแต่ Chrome 123 เป็นต้นไป ตัวอย่าง
chrome --headless --print-to-pdf --allow-chrome-scheme-url chrome://gpu