即使在通过webdriver + python设置浏览器首选项后,也无法禁止操作系统下载文件窗口

时间:2013-09-21 16:29:37

标签: python firefox ubuntu selenium webdriver

我知道之前已经问过这个问题,但在尝试建议后,我不断获得操作系统下载文件窗口。我想要做的是下载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

3 个答案:

答案 0 :(得分:3)

我认为您可能错误地使用了MIME类型。试试这个

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

可以找到有关pdf MIME类型的讨论here当您尝试下载pdf时,应该检查firefox看到的mime类型。我可能会错误地设置服务器!

旁注:每当这个话题出现时(通过selenium webdriver下载文件)我强烈建议不要这样做!请阅读文章"How To Download Files With Selenium And Why You Shouldn’t"进行推理。基本上它建议使用其他方法来测试直接下载。

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

答案 1 :(得分: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”

答案 2 :(得分: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/