为什么我不能使用Selenium Webdriver通过Firefox下载文件?

时间:2013-02-18 15:45:07

标签: c# webdriver selenium-webdriver

我尝试使用配置文件设置在firefox中下载文件,但是它不起作用你能告诉我我做错了什么,我使用的代码发布在这行下面

var profile = new FirefoxProfile { EnableNativeEvents = true };
profile.SetPreference("browser.download.folderList", 2);
profile.SetPreference("browser.download.manager.showWhenStarting", false);
profile.SetPreference("browser.download.dir", folderName);
profile.SetPreference("browser.download.downloadDir", folderName);
profile.SetPreference("browser.download.defaultFolder", folderName);
profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "image/jpeg,application/vnd.oasis.opendocument.text,application/vnd.oasis.opendocument.spreadsheet," +
                                                                            "application/vnd.oasis.opendocument.presentation,application/vnd.oasis.opendocument.graphics," +
                                                                            "application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet," +
                                                                            "application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation," +
                                                                            "application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.mozilla.xul+xml," +
                                                                            "application/vnd.google-earth.kml+xml");

3 个答案:

答案 0 :(得分:1)

经过几天的尝试,并阅读了很多可能性,这个为我工作,所以我与你分享,我希望它有用: 我只是这样设置webdriver firefox配置文件:

firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream doc xls pdf txt");

此解决方案允许我避免显示firefox下载弹出窗口,我可以使用selenium webdriver自动下载XLS文件。

答案 1 :(得分:0)

Selenium为每次运行创建一个新的firefox配置文件。您需要为selenium创建一个firefox配置文件,并让您的selenium脚本使用它。如果您在此配置文件中设置自动下载,那么它应该可以正常工作!

见这里 http://girliemangalo.wordpress.com/2009/02/05/creating-firefox-profile-for-your-selenium-rc-tests/

我只为java做过这个,但我想这个方法会类似。

编辑 用于指定配置文件的Java代码是:

ProfilesIni profile = new ProfilesIni();
FirefoxProfile ffprofile = profile.getProfile("SELENIUM");
WebDriver driver = new FirefoxDriver(ffprofile);

来源:

What profile does Selenium WebDriver use by default?

答案 2 :(得分:0)

使用以下设置使其正常工作:

FirefoxOptions options = new FirefoxOptions();
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\Windows\\temp");
profile.setPreference("browser.download.useDownloadDir", true);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");
options.setProfile(profile);
driver = new FirefoxDriver(options);

非常重要的一点:在研究开发人员工具并观察文件的Content-Type之后,选择了“ application / octet-stream”首选项。步骤:

  1. 打开开发人员工具
  2. 转到网络
  3. 单击链接下载pdf
  4. 在网络面板中,选择第一个请求
  5. mime类型是响应头中的Content-Type:

enter image description here

有关首选项设置的更多信息,可以在这里找到:http://toolsqa.com/selenium-webdriver/how-to-download-files-using-selenium/