对于页面下载的每一个附件,都会触发 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));请注意,处理该事件会让控制流产生分支,从而使脚本更难跟踪。由于主控制流并没有等待这个下载操作完成,你的场景可能会在文件仍在下载时就结束。