Case Study: Wait for File Download to Complete Safely in Selenium
How to increase reliability in an automated test for a file download.
This article will show you how to verify a file download completes successfully in Selenium WebDriver.
The test site for this article is http://zhimin.com/books/pwta. There is a sample PDF download that I will use for the tests.
The test design is quite straightforward.
- Click the download button
- Verify the file contents
There is an unknown factor with Step 2 — how long should we wait in the test script? And when do we know the file has finished downloading?
There are three approaches:
- Fixed wait
- Check the downloaded file’s size
- Wait for the browser download to complete ✅
This approach is very easy to understand. Just hardcode the wait time.
it "Fixed wait time" do
sleep 10 # wait 10 seconds
expect(File.exist?("/Users/me/Downloads/practical-web-test-automation-sample.pdf")).to be true
The above file-download script is not safe, we need to
- set the custom file download path (for Chrome)
- delete the file if already exists, before clicking the ‘Download’.
This has been covered in this article, Automated Testing PDF…