首页 > 解决方案 > Selenium WebDriver 在 Firefox 上下载 .msg 类型

问题描述

我设置了一个 Firefox 配置文件以在 Firefox 上下载文件。这是我的代码:

String mimeTypes = "application/zip,application/octet-stream,application/vnd.ms-outlook";
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir", path);
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", mimeTypes);

对于 zip 文件,它可以工作并且文件会自动保存,而无需打开“下载”对话框。但是对于.msg它不起作用的文件,仍然会出现“下载”对话框并且文件不会被保存。

我已经尝试了.msg文件的 MIME,我在互联网上找到了如上面的代码所示,但它不起作用。

我的问题:

  1. .msg文件类型的正确 MIME 是什么?
  2. 有没有办法 setPreferenceneverAsk.saveToDisk来保存所有类型而不添加一长串 MIME 类型?

我正在使用最新的 FF 60 和 Selenium 3.12 以及 geckoDriver v.0.20 进行测试。

编辑:

我不知道是不是这个原因,但在我的测试中,我一个接一个地点击下载2个文件,先是zip文件,然后是.msg文件。我也尝试用 and 替换文件.msg,并且它们与文件有相同的问题。似乎 setPreference for仅影响一种 MIME 类型.jpg.pdf.msgneverAsk.saveToDisk

标签: seleniumselenium-webdrivermime-typesfirefox-profile

解决方案


所以,我去检查正在下载的所有 mime 类型的文件。除了 File1 的 mime 类型保持原样之外,File2 的 mime 类型以某种方式更改为application/domain-of-my-app与此文件的实际 mime 类型无关。将此新的 mime 类型添加application/domain-of-my-app到列表后,它按预期工作。


推荐阅读