以下脚本与 baidu.com 失败:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://baidu.com');
await page.waitForSelector('div');
browser.close();
})();
原因是百度取消了waitForSelector
所需的 MutationObserver 。
如#1668 中所述,如果页面重新定义window.Node
,则page.click(selector)
不起作用
建议将此问题重命名为更通用的名称,例如:“如果页面重新定义内置全局对象,Puppeteer 方法将中断”
这种事情甚至可以在图书馆级别解决吗? 我在我的代码中这样做了,这似乎工作正常:
await this.page.evaluate( () => {
if ( ! window.Node ) {
window.Node = {};
}
if ( ! Node.ELEMENT_NODE ) {
Node.ELEMENT_NODE = 1;
}
} );
关于这个问题的任何更新?
最有用的评论
建议将此问题重命名为更通用的名称,例如:“如果页面重新定义内置全局对象,Puppeteer 方法将中断”
这种事情甚至可以在图书馆级别解决吗? 我在我的代码中这样做了,这似乎工作正常: