Downloads
note
For uploading files, see the uploading files section.
For every attachment downloaded by the page, page.on('download') event is emitted. If you create a browser context with the acceptDownloads
set, all these attachments are going to be downloaded into a temporary folder. You can obtain the download url, file system path and payload stream using the Download object from the event.
You can specify where to persist downloaded files using the downloadsPath
option in browserType.launch([options]).
note
Downloaded files are deleted when the browser context that produced them is closed.
Here is the simplest way to handle the file download:
const [ download ] = await Promise.all([ // Start waiting for the download page.waitForEvent('download'), // Perform the action that initiates download page.click('button#delayed-download')]);// Wait for the download process to completeconst path = await download.path();
#
VariationsIf you have no idea what initiates the download, you can still handle the event:
page.on('download', download => download.path().then(console.log));
Note that handling the event forks the control flow and makes script harder to follow. Your scenario might end while you are downloading a file since your main control flow is not awaiting for this operation to resolve.