Downloading file to specified location with Selenium and python Downloading file to specified location with Selenium and python python python

Downloading file to specified location with Selenium and python


You need to make Firefox save this particular file type automatically.

This can be achieved by setting browser.helperApps.neverAsk.saveToDisk preference:

from selenium import webdriverprofile = webdriver.FirefoxProfile()profile.set_preference("browser.download.folderList", 2)profile.set_preference("browser.download.manager.showWhenStarting", False)profile.set_preference("browser.download.dir", 'PATH TO DESKTOP')profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")driver = webdriver.Firefox(firefox_profile=profile)driver.get("Name of web site I'm grabbing from")driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]").click()

More explanation:

  • browser.download.folderList tells it not to use default Downloads directory
  • browser.download.manager.showWhenStarting turns of showing download progress
  • browser.download.dir sets the directory for downloads
  • browser.helperApps.neverAsk.saveToDisk tells Firefox to automatically download the files of the selected mime-types

You can view all these preferences at about:config in the browser. There is also a very detailed documentation page available here: About:config entries.

Besides, instead of using xpath approach, I would use find_element_by_partial_link_text():

driver.find_element_by_partial_link_text("DEV.tgz").click()

Also see:


If the application is generated dynamically (mime-types) using Chrome browser will be a better approach since the Chrome will not open the file download pop-up.But multiple download option should be enabled if you need multiple downloads.