使用Firefox和Selenium WebDriver自动下载CSV文件

13

我在使用Selenium WebDriver和Firefox时遇到了问题。我想要在对话框窗口中不需要确认就下载CSV文件,我的代码如下:

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.dir", download_dir)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/csv")

但似乎没有起作用。 我尝试了许多与browser.helperApps.neverAsk.saveToDisk有关的组合。

fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/csv,application/csv,text/plan,text/comma-separated-values")
或者
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/csv")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/plain")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/comma-separated-values")

但是没有任何区别,且Firefox不会自动下载。 我该怎么解决?


是的,那是由于错误的 MIME 类型导致的问题,谢谢! - nanoo
有人能帮我吗?点击此处 - Yevgeniy Semashko
3个回答

14

有时候内容类型可能会出乎意料

使用HttpFox Firefox插件(或类似工具)查找文件的真实内容类型,并在代码中使用它

顺便说一句,对于我来说,内容类型是

fp.set_preference("browser.helperApps.neverAsk.openFile", "application/octet-stream");
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");

我遇到了和@nanoo一样的问题。使用HttpFox并确定mime类型为application/msexcel。现在可以运行了!谢谢! - praneel

1

在Java Selenium中,使用SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/comma-separated-values,text/csv");可以下载所有类型的CSV文件。请享受使用!


0

现在(2016年5月)

 SetPreference("browser.helperApps.neverAsk.saveToDisk", "text/csv"); // C#

对我来说可行


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接