node.js - Puppeteer - 新窗口关于 :blank

标签 node.js puppeteer

我正在尝试与点击链接时从网站弹出的新窗口进行交互。当这个新窗口打开时,链接是: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/

相关文章:

mysql - 两个“相同”的 SQL 语句在 PhpMyAdmin 和 NodeJS 中表现不同

node.js - req.session 在 POST 请求中未定义 - SailsJS

node.js - 使用phonegap/cordova时,“node”不被识别为内部或外部命令、可操作程序或批处理文件

node.js - 将React App部署到heroku无法连接后端

jquery - 脚本无法产生期望的结果

puppeteer - 仅针对最新浏览器版本进行 E2E 测试有什么好处

jestjs - 如何为运行 Puppeteer 的 Jest 测试设置最大超时?

cloud-foundry - 将 Google Chrome Puppeteer 应用程序推送到 Predix 时出错

node.js - 如何使用请求模块node.js发出多个请求?

javascript - 无法使用ElectronJS运行NodeJS脚本(已更新)