Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在无头浏览器中读取控制台日志_Javascript_Node.js_Puppeteer - Fatal编程技术网

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

Javascript 无法在无头浏览器中读取控制台日志,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我在一个NodeJS项目中运行Puppeter,尝试获取URL的控制台日志。它似乎只适用于启动时没有警告或错误的初始控制台日志 我想查看的是所有日志,就像您在普通浏览器中查看前x秒的日志一样。这是我的密码: const puppeteerOptions = { headless: true, args: ['--disable-gpu', '--disable-dev-shm-usage', '--disable-setuid-sandbox', '--no-first-run'

我在一个NodeJS项目中运行Puppeter,尝试获取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秒内读取日志,我在关闭浏览器之前尝试过添加这些日志,但所做的只是暂停关闭,没有控制台日志通过


等待页面。等待(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);}
    })();

感谢它在dom加载之前显示了所有加载的内容,这很好,但是你知道我将如何记录接下来10秒左右出现的内容吗@乔治