使用 Playwright 下载文件
Posted
技术标签:
【中文标题】使用 Playwright 下载文件【英文标题】:Download file with Playwright 【发布时间】:2020-07-09 18:24:51 【问题描述】:如何?
我知道这个问题 How to catch a download with playwright? 但该示例代码不起作用。使用最新发布的Playwright,浏览器实例上没有'pageTarget'功能:
const client = await browser.pageTarget(page).createCDPSession();
【问题讨论】:
我知道这是一个剧作家的问题,但Download API 会是一个可行的选择吗? 【参考方案1】:当浏览器上下文关闭时,所有属于浏览器上下文的下载文件都会被删除。当浏览器关闭时,所有下载的文件都会被删除。
下载开始后会发出下载事件。下载完成后下载路径可用:
const [ download ] = await Promise.all([
page.waitForEvent('download'), // wait for download to start
page.click('a')
]);
// wait for download to complete
const path = await download.path();
...
https://github.com/microsoft/playwright/blob/master/docs/api.md#class-download
【讨论】:
【参考方案2】:Playwright 即将支持以跨浏览器兼容的方式下载,您可以跟踪此feature request。
目前,上述 Chromium 特定的 sn-p 可以通过将行更改为来修复:
const client = await context.newCDPSession(page);
它使用creating CDP sessions 的新方法。
【讨论】:
以上是关于使用 Playwright 下载文件的主要内容,如果未能解决你的问题,请参考以下文章
《PyInstaller打包实战指南》第二十二节 单文件模式打包Playwright
《PyInstaller打包实战指南》第二十二节 单文件模式打包Playwright