Saya ingin membuat tangkapan layar halaman dengan Chrome Headless, dan kami telah melihat tombol --screenshot
dan --virtual-time-budget
untuk mengambil tangkapan layar dan membatasi waktu tunggu browser untuk memuat.
Namun saya memiliki elemen pada halaman yang menunggu DOMContentLoaded untuk di-render, dan kami juga ingin menangkapnya.
Saya mencari cara untuk mengambil tangkapan layar, katakanlah, 5 detik setelah halaman dimuat, alih-alih tepat ketika itu dianggap dimuat.
Kami memanggil Chrome Headless dari aplikasi NodeJS kami seperti:
cp.spawnSync("google-chrome-beta", ["--headless", "--disable-gpu", "--screenshot", "--profile-directory=Default", "--window-size=1920,6200", "--virtual-time-budget=25000", url]);
Kami tahu bahwa ada beberapa pustaka npm yang dapat mencapai hal ini menggunakan API dari node, alih-alih menggunakan sakelar baris perintah, tetapi kami khawatir tentang stabilitas (tim Chrome suka memutus semua API internal mereka secara teratur).
TL; DR
Apakah ada cara untuk membuat Chrome Headless menunggu beberapa detik setelah pemuatan halaman sebelum mengambil tangkapan layar?
sumber
nodejs index.js --url="http://www.eff.org" --delay=5000
selama 5 detik penundaan.Jawaban:
Saya mencari hal yang sama. Apa yang saya temukan adalah dalang google. https://github.com/GoogleChrome/puppeteer
Ada banyak contoh, tetapi pada dasarnya Anda dapat melakukan apa yang saya lakukan.
sumber
UnhandledPromiseRejectionWarning: Error: ERROR: "networkidle" option is no longer supported. Use "networkidle2" instead
Seperti yang dinyatakan Vlastimil Ovčáčík , David Schnurr telah menulis dan berbagi skrip nodeJS untuk tujuan yang tepat ini di Medium .
Script harus plug and play, minus beberapa dependensi.
Setup adalah seperti itu:
git clone https://github.com/schnerd/chrome-headless-screenshots.git
npm install chrome-remote-interface minimist
node index.js --url="/superuser/1209741/how-to-take-a-screenshot-of-a-page-n-seconds-after-page-is-loaded-with-chrome-he" --delay=4000
sumber