有人可以解释为什么这段代码不起作用。在运行之前我有一个控制台日志,它page.evaluate()记录了我期望的内容,但里面的控制台日志page.evaluate从未运行。
const puppeteer = require('puppeteer');
(async () => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.example.com');
page.on('response', async response => {
const url = response.url();
if (url.includes('something')) {
console.log('this code runs');
await page.evaluate(() => {
console.log("this code doesn't run");
});
}
});
} catch (err) {
console.log(err);
}
})();
Run Code Online (Sandbox Code Playgroud)
小智 10
page.evaluate 内的代码在浏览器上下文中运行,因此 console.log 可以工作,但在 Chrome 控制台而不是 Puppeteer 控制台内运行。
要在 Puppeteer 控制台中显示 Chrome 上下文的日志,您可以在使用 Puppeteer 启动浏览器时将参数中的dumpio设置为 true:
const browser = await puppeteer.launch({
dumpio: true
})
Run Code Online (Sandbox Code Playgroud)
小智 6
尝试使用此代码显示评估中的 console.log
page.on('console', msg => {
for (let i = 0; i < msg.args().length; ++i)
console.log(`${i}: ${msg.args()[i]}`);
});
page.evaluate(() => console.log('hello', 5, {foo: 'bar'}));
Run Code Online (Sandbox Code Playgroud)
https://pptr.dev/#?product=Puppeteer&version=v1.20.0&show=api-event-console
| 归档时间: |
|
| 查看次数: |
12017 次 |
| 最近记录: |