javascript - 没有来自窗口的“targetcreated”。在 _blank 中打开文件下载
问题描述
我对 puppeteer 越来越疯狂了。我在 MacOS 上运行最后一个版本(8),最后一个 Chromium 版本(90.0.4410.0)......我目前正在尝试处理由 javascript 启动的下载,并在新标签中打开一个window.open
指令...
我设法找到了被调用的函数:
function(a){if(this.ExportUrlBase==null)return false;window.open(this.ExportUrlBase+encodeURIComponent(a),"_blank");return true}
为了处理下载,我使用“经典”方式:
await (page as any)._client.send('Page.setDownloadBehavior', {
behavior: 'allow',
downloadPath: tempFolderPath,
});
当我使用该headless:false
选项时,我看到一个新选项卡正在打开并且文件正在按预期下载,当我禁用 时setDownloadBehavior
,我可以在 devtools 中看到请求的 URL(带有响应标头和我可以使用的所有信息)。 ..
但是无论是否无头,我都没有targetcreated
为新选项卡触发任何事件,因此我无法处理下载开始以便能够监视它...我尝试在browser
实例中以及在context
用于创建页面的实例,它们都保持沉默。我还尝试popup
在活动页面中监听事件,也没有触发任何事件......
问题是,使用setDownloadBehavior
,文件被下载,并且在预期的文件夹中,所以我无法确定下载是在同一页面还是不同页面中进行的。通过侦听活动页面中的response
orrequest
事件,我没有收到对下载文档的 URL 的请求...
为了监控其他用例中的下载(当在同一页面中请求下载时),我使用response
页面上的事件并测试标题或文件名......它就像一个魅力。
有人对此有解决方案吗?我差点把头撞在墙上……
感谢大家!:-)
解决方案
推荐阅读
- machine-learning - 如何检查文本是否有信息请求
- sql - 需要帮助回答有关 sql 数据完整性的问题
- python - 打印嵌套字典中的数字产品
- javascript - 如何使用 ES6 Javascript 类验证和显示表单数据
- github - github克隆分支和合并过程
- c# - 如何使用 selenium webdriver 自动化 Kendo UI 下拉菜单?
- javascript - 为 React-Data-Grid 编写自定义编辑器的问题
- php - PHP会话不适用于IOS模拟器中的离子应用程序?
- sqlite - 如何用 cargo 编译 rusqlite 0.20.0
- html - 需要帮助来使用表格识别此 html 代码