Puppeteer里面的page.evaluate

我怎么能console.log内的page.evaluate内的东西,传递给节点,并评估页面使用它?

我其实想loggingpage.evaluate的进度到控制台,并显示一些结果给用户。

如果你想要的只是“loggingpage.evaluate到控制台的进度”,那么只是

const page = await browser.newPage(); page.on('console', console.log); 

像往常一样使用page.evaluate console.log ,不再需要依赖关系。

在这个代码示例中实现notifyUi函数:

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

我喜欢@Vaviloff的答案,但是当你只想要文本时,你将会logging整个ConsoleMessage对象。 因此,我个人使用下面的:

 const EOL = require('os').EOL; const _page = await browser.newPage(); _page.on('console', _fCleanLog); function _fCleanLog(ConsoleMessage) { console.log(ConsoleMessage.text + EOL); }