Ich möchte mit Chrome Headless einen Screenshot von einer Seite machen. Wir haben sowohl --screenshot
den --virtual-time-budget
Schalter als auch den Schalter zum Erstellen eines Screenshots und zum Begrenzen der Wartezeit des Browsers auf die Ladezeit gesehen.
Ich habe jedoch Elemente auf der Seite, die darauf warten, dass DOMContentLoaded gerendert wird, und wir möchten diese auch erfassen.
Ich suche nach einer Möglichkeit, einen Screenshot zu machen, zum Beispiel 5 Sekunden nach dem Laden der Seite, anstatt nach der richtigen, wenn sie als geladen betrachtet wird.
Wir rufen Chrome Headless aus unserer NodeJS-Anwendung folgendermaßen auf:
cp.spawnSync("google-chrome-beta", ["--headless", "--disable-gpu", "--screenshot", "--profile-directory=Default", "--window-size=1920,6200", "--virtual-time-budget=25000", url]);
Wir wissen, dass es mögliche npm-Bibliotheken gibt, die dies mithilfe einer API von Node erreichen können, anstatt Befehlszeilenoptionen zu verwenden. Wir sind jedoch besorgt über die Stabilität (das Chrome-Team unterbricht regelmäßig alle internen APIs).
TL; DR
Gibt es eine Möglichkeit, Chrome Headless nach dem Laden der Seite einige Sekunden warten zu lassen, bevor ein Screenshot erstellt wird?
quelle
nodejs index.js --url="http://www.eff.org" --delay=5000
für 5 Sekunden Verzögerung.Antworten:
Ich habe dasselbe gesucht. Was ich gefunden habe, ist Google Puppenspieler. https://github.com/GoogleChrome/puppeteer
Es gibt viele Beispiele, aber im Grunde können Sie das tun, was ich getan habe.
quelle
UnhandledPromiseRejectionWarning: Error: ERROR: "networkidle" option is no longer supported. Use "networkidle2" instead
Wie Vlastimil Ovčáčík feststellt , hat David Schnurr ein nodeJS-Skript für genau diesen Zweck auf Medium geschrieben und freigegeben .
Das Skript sollte Plug-and-Play sein, abzüglich einiger Abhängigkeiten.
Das Setup ist wie folgt:
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
quelle