如何在Java中使用Selenium通过firefox下载XLSX文件?

时间:2015-01-02 11:37:57

标签: java selenium

我正在尝试使用以下代码下载xlsx文件:

FirefoxProfile profile = new FirefoxProfile();

profile.setPreference("browser.download.dir", "directory where to save data");
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/x-excel, application/x-msexcel, application/excel, application/vnd.ms-excel");

ob = new FirefoxDriver(profile);

但是在显示下载对话框后测试停止,并且没有下载任何文件。

但是,如果我通过更改上面代码中提到的mime类型为csv文件尝试相同的代码,那么它可以正常工作。

请帮帮我。谢谢。

3 个答案:

答案 0 :(得分:4)

而不是上面的代码,我添加了以下内容:

firefoxProfile.setPreference("browser.download.dir",dest_path);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false);
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/xls;text/csv");

现在它工作正常。 xlsx的MIME类型无法正常工作,所以我尝试将xls文件的MIME类型放入,现在它工作正常。 XLSX文件将自动下载。

答案 1 :(得分:2)

只需使用此代码:

profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

答案 2 :(得分:0)

看起来您正在下载的文件的MIME类型不同(可能类似于application/force-download), 正如您所提到的xlsx的正确MIME类型 - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

安装“HTTPFox”Firefox插件以记录流量并检查其中捕获的实际MIME类型。一旦使用该MIME类型进行更新,您的代码就可以正常工作。