使用Selenium和Python控制Firefox下载提示

时间:2016-07-19 12:36:52

标签: python

这是我的代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2);
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", "/home/ripundeep/Desktop/Python Challenges /")    
profile.set_preference("browser.helperApps.alwaysAsk.force", False)
profile.set_preference("browser.download.manager.alertOnEXEOpen", False)
profile.set_preference("browser.download.manager.focusWhenStarting", False)
profile.set_preference("browser.download.manager.useWindow", False)
profile.set_preference("browser.download.manager.showAlertOnComplete", False)
profile.set_preference("browser.download.manager.closeWhenDone", False)
profile.set_preference("browser.helperApps.neverAsk.openFile","text/csv")
profile.set_preference("browser.helperApps.neverAsk.saveToDisk","text/csv")
profile.update_preferences()

driver = webdriver.Firefox(firefox_profile=profile)
driver.get(url)
driver.find_element_by_css_selector("#id").send_keys("keyword")
WebDriverWait(driver, 1, poll_frequency=0.1).until(lambda drv:  len(drv.find_elements_by_css_selector("#ctl00_ContentPlaceHolder1_btnSubmit")) > 0)
driver.find_element_by_css_selector("#submitid").click()
driver.find_element_by_css_selector("#DownloadLinkId").click()

我想停止firefox向我显示下载提示并自动保存,我尝试了所有可能的解决方案但是没有用。请帮忙。

1 个答案:

答案 0 :(得分:2)

我记得提供更多mime类变体通常有助于解决这样的问题:

mime_types = [
    'text/plain', 
    'application/vnd.ms-excel', 
    'text/csv', 
    'application/csv', 
    'text/comma-separated-values', 
    'application/download', 
    'application/octet-stream', 
    'binary/octet-stream', 
    'application/binary', 
    'application/x-unknown'
]
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", ",".join(mime_types))

我还认为你不应该打电话给profile.update_preferences()

除此之外,以下是查看mime-type Firefox检测到的内容的步骤:

  • 使用Firefox手动下载文件,选中“自动保存此文件类型”复选框
  • 打开帮助 - >故障排除信息
  • 找到“个人资料文件夹”按钮,点击它
  • 在个人资料文件夹中找到mimeTypes.rdf文件
  • 在文本编辑器中打开文件并查找那里提到的mimetypes - 以urn:mimetype
  • 开头的XML节点属性值
  • 使用您在browser.helperApps.neverAsk.saveToDisk逗号分隔值
  • 中找到的mimetypes