使用 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 下载文件的主要内容,如果未能解决你的问题,请参考以下文章

Hello Playwright:自动化测试

《PyInstaller打包实战指南》第二十二节 单文件模式打包Playwright

《PyInstaller打包实战指南》第二十二节 单文件模式打包Playwright

Hello Playwright:简化部署方式

Playwright & NodeJs - 读取 CSV 并将数据推送到数组

如何配置 playwright-jest 以排除测试套件(规范)文件以进行运行?