我正在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);
答案 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);}
})();