Tutorial 17 – Download a File using Playwright
What you will Learn in this blog:
Download a file using PW
Code snippets
Download a file using PW
Let us now see how to download a file using PW.
We will download a file from the test website page
https://the-internet.herokuapp.com/download
Create a new test file
Go to the official documentation page to download a file using Playwright
https://playwright.dev/docs/api/class-download
Copy the above code snippet and paste it inside the test block
Right click and ‘Format Document’
The code gets formatted
Let us now add a line to launch the webpage
Inspect any file
Copy the highlighted text and paste it as shown below
Next, let us log the path where the file gets downloaded temporarily during runtime
Save and execute the command in ‘debug’ mode. This mode opens the playwright inspector
Notice that the blank chromium browser gets launched alongwith the playwright inspector having ‘Step over’ button
Click ‘Step over’.
Notice that the webpage is loaded and we are right now on line#11 (see inspector)
Click ‘Step over’.
Notice that the file gets downloaded
Click ‘Step over’.
The script gest over and the console log shows the temp path. The test passes
Let us now log the path of file url
Saver and execute.
Notice that the file url (alongwith the filename) too can be seen in the console
So this is how we can download a file using PW.
Code snippet
import { test, expect } from '@playwright/test'
test("file download operation", async ({ page }) => {
await page.goto('https://the-internet.herokuapp.com/download')
// Note that Promise.all prevents a race condition
// between clicking and waiting for the download.
const [download] = await Promise.all([
// It is important to call waitForEvent before click to set up waiting.
page.waitForEvent('download'),
// Triggers the download.
page.locator('text=LambdaTest.txt').click(),
]);
// wait for download to complete
const path = await download.path();
console.log(path)
const url = await download.url();
console.log(url)
})
Thank you for reading!