Quiero hacer una captura de pantalla de una página con Chrome Headless, y hemos visto tanto --screenshot
y el --virtual-time-budget
interruptores para tomar una captura de pantalla y limitar el tiempo de carga que espera el navegador.
Sin embargo, tengo elementos en la página que esperan a que DOMContentLoaded se renderice, y queremos capturarlos también.
Estoy buscando una manera de tomar una captura de pantalla, digamos, 5 segundos después la página se carga, en lugar de la derecha cuando se considera cargada.
Estamos llamando a Chrome Headless desde nuestra aplicación NodeJS así:
cp.spawnSync("google-chrome-beta", ["--headless", "--disable-gpu", "--screenshot", "--profile-directory=Default", "--window-size=1920,6200", "--virtual-time-budget=25000", url]);
Sabemos que hay posibles bibliotecas npm que pueden lograr esto utilizando una API desde el nodo, en lugar de usar interruptores de línea de comandos, pero nos preocupa la estabilidad (al equipo de Chrome le gusta romper todas sus API internas con regularidad).
TL; DR
¿Hay alguna forma de hacer que Chrome Headless espere unos segundos después de cargar la página antes de tomar una captura de pantalla?
fuente
nodejs index.js --url="http://www.eff.org" --delay=5000
Por 5 segundos de retraso.Respuestas:
Estaba buscando lo mismo. Lo que encontré es google titiritero. https://github.com/GoogleChrome/puppeteer
Hay muchos ejemplos, pero básicamente puedes hacer lo que yo hice.
fuente
Como Vlastimil Ovčáčík Estados Unidos, David Schnurr ha escrito y compartido un script nodeJS para este propósito exacto en Medio .
El script debe ser plug and play, menos algunas dependencias.
La configuración es como tal:
git clone https://github.com/schnerd/chrome-headless-screenshots.git
npm install chrome-remote-interface minimist
node index.js --url="https://superuser.com/questions/1209741/how-to-take-a-screenshot-of-a-page-n-seconds-after-page-is-loaded-with-chrome-he" --delay=4000
fuente