Puppeteer: page.waitForSelector no funciona en baidu.com

Creado en 30 ago. 2017  ·  3Comentarios  ·  Fuente: puppeteer/puppeteer

El siguiente script falla con 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();
})();

La razón es que Baidu anula MutationObserver que se requiere para waitForSelector .

bug chromium

Comentario más útil

Sugiera cambiar el nombre de este problema a algo más general, como: "Los métodos de titiritero se rompen si las páginas redefinen los objetos globales integrados".

¿Es posible solucionar este tipo de cosas a nivel de biblioteca? Hice esto en mi código, que parece funcionar bien:

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

Todos 3 comentarios

Como se informó en # 1668, page.click(selector) no funciona si la página redefine window.Node

Sugiera cambiar el nombre de este problema a algo más general, como: "Los métodos de titiritero se rompen si las páginas redefinen los objetos globales integrados".

¿Es posible solucionar este tipo de cosas a nivel de biblioteca? Hice esto en mi código, que parece funcionar bien:

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

¿Alguna actualización sobre este tema?

¿Fue útil esta página
0 / 5 - 0 calificaciones