2

我知道之前有人问过这个问题,但是在尝试了建议之后,我不断地得到操作系统下载文件窗口。我想要做的是下载一个 pdf 文件。我已经设置了浏览器首选项,但尽管如此,它并没有抑制操作系统窗口。

这是我编写的代码片段:

firefoxProfile = webdriver.FirefoxProfile()
firefoxProfile.set_preference('browser.download.folderList', 2)
firefoxProfile.set_preference('browser.download.manager.showWhenStarting', False)
firefoxProfile.set_preference('browser.download.dir', '/media/pinku/Pinku')
firefoxProfile.set_preference('browser.helperApps.alwaysAsk.force', False)
firefoxProfile.set_preference('browser.helperApps.neverAsk.saveToDisk',
'application/octet-stream')

self.driver = webdriver.Firefox(firefoxProfile)

我正在使用 Ubuntu 12.10、Firefox、webdriver、python

4

3 回答 3

3

我想你可能弄错了 MIME 类型。尝试这个

firefoxProfile.set_preference('browser.helperApps.neverAsk.saveToDisk',
'application/pdf,application/x-pdf')

可以在此处找到有关 pdf MIME 类型的讨论。当您尝试下载 pdf 时,您应该检查您的 Firefox 看到的 mime 类型。可能是我被服务器设置错了!

旁注:每当这个话题出现(通过 selenium webdriver 下载文件)我强烈建议不要这样做!阅读文章“如何使用 Selenium 下载文件以及为什么不应该”进行推理。基本上它建议使用其他方式来测试直接下载。

更新:我没有将两种 mime 类型都放在一个字符串中,之前这是错误的。我还添加了有关检查服务器实际交付内容的建议。

于 2013-09-22T10:05:57.703 回答
2

我一直在使用firefox 24.03(这是ESR版本)这个版本的firefox引入了pdfjs。这将在浏览器中打开 PDF。

所以你需要抑制它。这是对我有用的代码/firefox 配置文件。

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir","C:\\temp")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/pdf")
fp.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
fp.set_preference("pdfjs.disabled", True)
driver = webdriver.Firefox(firefox_profile=fp)

有了这个配置文件,我所有的 pdf 下载都转到“C:\temp”

于 2014-02-26T19:45:02.010 回答
0

我遇到了类似的问题,因为服务器返回的 mime 类型是“text/plain”而不是“text/csv”。

这对我有用(使用 watir-webdriver):

profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.folderList'] = 2 # custom location
profile['browser.download.dir'] = download_directory
profile['browser.helperApps.neverAsk.saveToDisk'] = "text/plain"
browser = Watir::Browser.new :firefox, :profile => profile

在此处使用 watir-webdriver 下载的更多信息:http ://watirwebdriver.com/browser-downloads/

于 2014-07-24T12:06:42.843 回答