下载

介绍

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

您可以通过在 browserType.launch() 中设置 downloadsPath 选项,指定下载文件保存的路径。

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

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

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

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

变体

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

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

请注意,处理事件会分叉控制流,使得脚本难以跟踪。您的场景可能会在下载文件时结束,因为您的主要控制流并没有等待此操作的完成。

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