我怎么能console.log里面的东西在page.evaluate中传递给节点并使用它期间对页面的评价?puppeteer里面page.evaluate
我其实想记录page.evaluate的进度到控制台并向用户显示一些结果。
我怎么能console.log里面的东西在page.evaluate中传递给节点并使用它期间对页面的评价?puppeteer里面page.evaluate
我其实想记录page.evaluate的进度到控制台并向用户显示一些结果。
,那么就
const page = await browser.newPage();
page.on('console', console.log);
而且像平常一样在page.evaluate
中使用console.log
,不再需要依赖关系。
实现此代码示例中notifyUi
功能:如果你想要的是“日志page.evaluate到控制台的进步”
const page = await browser.newPage();
page.on('console', (...args) => {
this.notifyUi('[chrome] ' + args[0]);
});
await page.goto(url);
const result = await page.evaluate(() => {
console.log('I am alive');
return Promise.resolve(true);
});
this.notifyUi('Evaluation returned with ' + result);
const page = await browser.newPage();
page.on('console', ConsoleMessage => console.log(ConsoleMessage.text));
最简单的方式得到它的工作完全像你期望的
const page = await browser.newPage();
page.on('console', (log) => console[log._type](log._text));
很多以前提供的答案,今天不再起作用。还有一件事情在一些页面上可能非常烦人,这是“警告”信息污染了输出。解决这个问题的一种方法是过滤消息的类型。下面的代码有助于降低噪音,并与木偶的当前版本的作品:
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.on('console', consoleMessageObject => function (consoleMessageObject) {
if (consoleMessageObject._type !== 'warning') {
console.debug(consoleMessageObject._text)
}
});
await page.goto('https://google.com');
const result = await page.evaluate(() => {
console.log('Browser scope.');
return 'Normal scope.';
});
console.log(result)
参见[我的回答(https://stackoverflow.com/a/47460782/3931488)为可能的改进 –
如果你想让它看起来完全像一个正常的控制台日志,使用下面列出的改进版本 – jamrizzi