我正在尝试与点击链接时从网站弹出的新窗口进行交互。当这个新窗口打开时,链接是: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
最佳答案
显然这是一个错误。如前所述,此处报告: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
因此,当我单击一个我知道是 auto:blank 的链接时,我会搜索未初始化“target._isInitialized”的目标,并再次调用 _targetInfoChanged,并将 targetInfo 作为参数传递。 目前正在运行。这只是错误修复之前的一种解决方法。
关于node.js - Puppeteer - 新窗口关于 :blank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51390268/