Skip to content

介绍如何等待下载、保存下载文件和读取下载路径。

对于页面下载的每一个附件,都会触发 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));

请注意,处理该事件会让控制流产生分支,从而使脚本更难跟踪。由于主控制流并没有等待这个下载操作完成,你的场景可能会在文件仍在下载时就结束。

-
0:000:00