Chcę zrobić zrzut ekranu strony z Chrome Headless i widzieliśmy zarówno przełączniki, jak --screenshot
i --virtual-time-budget
przełączniki do robienia zrzutów ekranu i ograniczania oczekiwania przeglądarki na czas ładowania.
Mam jednak na stronie elementy, które czekają na renderowanie DOMContentLoaded, i my też chcemy je przechwycić.
Szukam sposobu na zrobienie zrzutu ekranu, powiedzmy, 5 sekund po załadowaniu strony, zamiast dokładnie wtedy, gdy zostanie uznana za załadowaną.
Nazywamy Chrome Headless z naszej aplikacji NodeJS w następujący sposób:
cp.spawnSync("google-chrome-beta", ["--headless", "--disable-gpu", "--screenshot", "--profile-directory=Default", "--window-size=1920,6200", "--virtual-time-budget=25000", url]);
Wiemy, że są możliwe biblioteki npm, które mogą to osiągnąć za pomocą interfejsu API z węzła zamiast przełączników wiersza poleceń, ale martwimy się o stabilność (zespół Chrome lubi regularnie łamać wszystkie wewnętrzne interfejsy API).
TL; DR
Czy mimo wszystko Chrome bezgłowy musi zaczekać kilka sekund po załadowaniu strony przed zrobieniem zrzutu ekranu?
nodejs index.js --url="http://www.eff.org" --delay=5000
przez 5 sekund.