Как сделать скриншот страницы через N секунд после загрузки Chrome Headless?

Я хочу сделать скриншот страницы с Chrome без головы, и мы видели оба --screenshot и --virtual-time-budget переключатели для снятия скриншота и ограничения времени ожидания загрузки браузера.

у меня есть элементы на странице, Однако, которые ждут DOMContentLoaded для визуализации, и мы тоже хотим захватить их.

Я ищу способ сделать скриншот, скажем, 5 секунд после страница загружается, а не справа, когда это считается нагруженный.

мы называем Chrome безголовый из нашего приложения NodeJS, как так:

cp.spawnSync("google-chrome-beta", ["--headless", "--disable-gpu", "--screenshot", "--profile-directory=Default", "--window-size=1920,6200", "--virtual-time-budget=25000", url]);

мы знаем, что есть возможные библиотеки npm, которые могут достичь этого с помощью API от node, вместо того, чтобы использовать параметры командной строки, но мы обеспокоены стабильностью (команда Chrome любит регулярно ломать все свои внутренние API).

TL; DR

есть ли в любом случае, чтобы сделать Chrome безголовый подождите несколько секунд после загрузки страницы, прежде чем принимать скриншот?

3
задан Madara Uchiha
16.05.2023 16:13 Количество просмотров материала 3125
Распечатать страницу

2 ответа

Я искал то же самое. Я нашел кукловода из google. https://github.com/GoogleChrome/puppeteer

есть много примеров, но в принципе вы можете делать то, что я сделал.

const puppeteer = require('puppeteer');

function timeout(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
};

(async() => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.setViewport({width: 5960, height: 4209})
    await page.goto('http://stackoverflow.com', {waitUntil: 'networkidle'});
    await timeout(10000)
    await page.screenshot({path: 'example.png'});
    browser.close();

})();
4
отвечен Vincnetas 2023-05-18 00:01

As Vlastimil Ovčáčík Штатов, Дэвид Schnurr написал и общий сценарий nodeJS для этой цели на средний.

скрипт должен быть plug and play, минус некоторые зависимости.

настройки так:

  1. клонировать Git respository.

    git clone https://github.com/schnerd/chrome-headless-screenshots.git

  2. установить зависимости:

    npm install chrome-remote-interface minimist

  3. выполнить script

    node index.js --url="/q/how-to-take-a-screenshot-of-a-page-n-seconds-after-page-is-loaded-with-chrome-headless-8384/" --delay=4000
1
отвечен var firstName 2023-05-18 02:18

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх