javascript - 无法在 headless 浏览器中读取控制台日志

标签 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);}
    })();

在这种情况下,我将访问包含大量控制台日志但未在此处显示的雅虎站点。我认为这是因为他们在网站加载后进行登录。

至于在前 x 秒内读取日志,我曾尝试在关闭浏览器之前添加它,但所做的只是停止关闭并且没有控制台日志通过。

等待页面.waitFor(10000);

最佳答案

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

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);}
    })();

关于javascript - 无法在 headless 浏览器中读取控制台日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55495141/

相关文章:

javascript - 为什么将函数参数传递给 React.useState 并且返回函数将返回过时的值

javascript - showAlert 搜索输入并显示

node.js - 重用浏览器实例 puppeteer

selenium - headless 谷歌浏览器 : How to prevent sites to know whether their window is focused or not

javascript - Stripe Checkout undefined reference 错误

javascript - 创建帐户时的 Route.go() 不起作用 (METEOR)

c++ - 实例化并将 C++ 对象传递给 Node.js 函数 V8

node.js - 如何使用 EJS 呈现使用 Express 和 Node.JS 的 Mongodb 查询结果?

node.js - 多种型号的水线交易

javascript - Promise 一个异步函数