Puppeteer: page.waitForSelector 在 baidu.com 上不起作用

创建于 2017-08-30  ·  3评论  ·  资料来源: puppeteer/puppeteer

以下脚本与 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 。

bug chromium

最有用的评论

建议将此问题重命名为更通用的名称,例如:“如果页面重新定义内置全局对象,Puppeteer 方法将中断”

这种事情甚至可以在图书馆级别解决吗? 我在我的代码中这样做了,这似乎工作正常:

await this.page.evaluate( () => {
    if ( ! window.Node ) {
        window.Node = {};
    }
    if ( ! Node.ELEMENT_NODE ) {
        Node.ELEMENT_NODE = 1;
    }
} );

所有3条评论

如#1668 中所述,如果页面重新定义window.Node ,则page.click(selector)不起作用

建议将此问题重命名为更通用的名称,例如:“如果页面重新定义内置全局对象,Puppeteer 方法将中断”

这种事情甚至可以在图书馆级别解决吗? 我在我的代码中这样做了,这似乎工作正常:

await this.page.evaluate( () => {
    if ( ! window.Node ) {
        window.Node = {};
    }
    if ( ! Node.ELEMENT_NODE ) {
        Node.ELEMENT_NODE = 1;
    }
} );

关于这个问题的任何更新?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

barnash picture barnash  ·  3评论

selfrefactor picture selfrefactor  ·  3评论

ryanvincent29 picture ryanvincent29  ·  3评论

octasimo picture octasimo  ·  3评论

ngryman picture ngryman  ·  3评论