无法在无头浏览器中浏览控制台日志

时间:2019-04-03 12:24:29

标签: javascript node.js puppeteer

我正在node js项目中运行puppeteer,以尝试获取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 个答案:

答案 0 :(得分:1)

我设法解决了这个问题,这是正确的方法。

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);}
    })();
相关问题