使用Selenium和python将文件下载到指定位置

Jer*_*ill 28 python firefox selenium selenium-webdriver

好到目前为止,我有我的编程去网站我想下载链接并选择它,然后firefox对话框出现,我不知道该怎么办.我想将此文件保存到桌面上的文件夹中.我正在使用它进行夜间构建,所以我需要这个工作.请帮忙.

这是我从网站上获取下载链接的代码:

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()
Run Code Online (Sandbox Code Playgroud)

ale*_*cxe 58

您需要Firefox自动保存此特定文件类型.

这可以通过设置browser.helperApps.neverAsk.saveToDisk首选项来实现:

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()
Run Code Online (Sandbox Code Playgroud)

更多解释:

  • browser.download.folderList告诉它不要使用默认Downloads目录
  • browser.download.manager.showWhenStarting 轮流显示下载进度
  • browser.download.dir 设置下载目录
  • browser.helperApps.neverAsk.saveToDisk 告诉Firefox自动下载所选文件 mime-types

您可以about:config在浏览器中查看所有这些首选项.此处还有一个非常详细的文档页面:关于:config条目.

此外,xpath我不会使用方法,而是使用find_element_by_partial_link_text():

driver.find_element_by_partial_link_text("DEV.tgz").click()
Run Code Online (Sandbox Code Playgroud)

另见:

  • 是否可以将`browser.helperApps.neverAsk.saveToDisk`设置为所有文件?我不知道我下载的文件类型. (4认同)