Downloading file to specified location with Selenium and python

0
0

Ok so far i have my programing going to the website i want to download link from and selecting it, then the firefox dialogue box shows up and i don’t know what to do. i want to save this file to a folder on my desktop. I am using this for a nightly build so i need this to work. Please help.

Here is my code that grabs the download link from the website:

driver = web driver.Firefox()
driver
.implicitly_wait(5)
driver
.get("Name of web site I'm grabbing from")
driver
.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]".click()
  • You must to post comments
0
0

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 webdriver
profile
= 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:

  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.
Name*
E-mail*
Website