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
.
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?
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: