Не могу читать журналы консоли в безголовом браузере - PullRequest
2 голосов
/ 03 апреля 2019

Я запускаю кукловод в проекте узла js, чтобы попытаться получить консольные логи URL-адреса. Кажется, он работает только с начальными консольными журналами при запуске, которые не содержат предупреждений или ошибок.

Я хотел бы просмотреть все журналы, как в обычном браузере, в течение первых x секунд. Вот мой код:

const puppeteerOptions =
{
    headless: true,
    args: ['--disable-gpu', '--disable-dev-shm-usage', '--disable-setuid-sandbox', '--no-first-run', '--no-sandbox', '--no-zygote', '--single-process'],
};

(async () =>
    {
        try
        {
            const browser = await HeadlessBrowser.launch(puppeteerOptions);
            const page = await browser.newPage();

            page.on('console', msg =>
            {
                console.log(msg.text());
            });

            await page.goto('https://uk.yahoo.com/');
            await browser.close();
        }
        catch(e) {return reject(e);}
    })();

В этом случае я собираюсь на сайт Yahoo, который содержит много консольных журналов, но не отображает их здесь. Я думаю, потому что они регистрируются после загрузки сайта.

Что касается чтения журналов за первые x секунд, я попытался добавить это перед закрытием браузера, но все, что было сделано, это остановило закрытие, и журналы консоли не проходили.

await page.waitFor (10000);

1 Ответ

1 голос
/ 03 апреля 2019

Мне удалось это исправить, и вот правильный путь.

const delay = 5000; //Milliseconds, 5 seconds

(async () =>
    {
        try
        {
            const browser = await HeadlessBrowser.launch(puppeteerOptions);
            const page = await browser.newPage();

            page.on('console', msg =>
            {
                //do whatever
            });

            page.on('pageerror', error =>
            {
                // do whatever
            });

            /*
            page.on('requestfailed', request => {
                //Didn't need
            });
            */

            await page.goto(data.url);
            await page.waitFor(delay);
            await browser.close();

            Utils.logger('Finished reading console logs.');
            return resolve();
        }
        catch(e) {return reject(e);}
    })();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...