跳到主要内容

文件下载

简介

每当页面下载附件时,都会触发 page.on('download') 事件。所有附件都会被下载到一个临时文件夹中。您可以通过事件中的 Download 对象获取下载URL、文件名以及有效载荷流。

您可以使用 browserType.launch() 中的 downloadsPath 选项来指定下载文件的持久化存储位置。

备注

当产生下载的浏览器上下文关闭时,下载的文件会被删除。

以下是处理文件下载的最简单方式:

// 在点击前开始等待下载事件。注意这里没有使用await
const downloadPromise = page.waitForEvent('download');
await page.getByText('下载文件').click();
const download = await downloadPromise;

// 等待下载完成并将文件保存到指定位置
await download.saveAs('/path/to/save/at/' + download.suggestedFilename());

其他变体

如果您不知道是什么触发了下载,仍然可以处理该事件:

page.on('download', download => download.path().then(console.log));

请注意,处理事件会分流控制流,使脚本更难跟踪。由于主控制流没有等待此操作完成,您的场景可能在文件下载过程中就结束了。

备注

关于文件上传,请参阅 上传文件 部分。