试图链接到某个新窗口时,该新窗口会从网站弹出。当此新窗口打开时,链接为:about:blank。当链接中的内容不是空白时,它将起作用。 有人知道解决方法吗?
工作(与某物链接):
const newPagePromise = new Promise(x => browser.once('targetcreated', target => x(target.page())));
await page.click('#link-of-new-window');
const newPage = await newPagePromise;
不工作(大约:空白)
//not entering
browser.on('targetcreated', function(){
console.log('New Tab Created');
});
const newPagePromise = new Promise(x => browser.once('targetcreated', target => x(target.page())));
await page.click('#link-of-new-window');
const newPage = await newPagePromise; //hang in here forever
答案 0 :(得分:0)
显然这是一个错误。如前所述,它在这里报告:Puppeteer's github.
作为一种解决方法,我注意到在创建带有某些链接的新窗口时,如下所示:
await page.evaluate(async () => await window.open("http://google.com","Schedule","menubar=0,scrollbars=1,resizable=1"));
代码遵循以下功能:
_targetCreated
_targetInfoChanged
_targetInfoChanged
但是,当使用auto:blank创建新窗口时
await page.evaluate(async () => await window.open("","Schedule","menubar=0,scrollbars=1,resizable=1"));
这是流程:
_targetCreated
_targetInfoChanged
因此,当我单击一个我知道是自动的链接时:空白,我将搜索未初始化的目标“ target._isInitialized”,然后再次调用_targetInfoChanged并将targetInfo作为参数传递。 它现在正在工作。这只是解决错误之前的解决方法。