javascript - 使用 Protractor 在 Firefox 上下载文件

标签 javascript firefox selenium-webdriver jasmine protractor

我需要使用 Protractor 在 Firefox 上下载一个 zip 文件。 单击下载链接时,会弹出要求打开/保存文件的 Windows 对话框。那么我该如何处理呢。我需要将哪些参数传递给驱动程序? 使用 chrome 我可以做到这一点 下载: { 'prompt_for_download':假 },

但是我应该用 firefox 做什么。

最佳答案

问题是 - 您无法通过 Protractor/selenium 操作“另存为...”对话框。您应该首先避免打开它,让 firefox 自动下载指定 mime 类型的文件 - 在您的情况下为 application/zip

换句话说,您需要使用自定义 Firefox Profile 启动 Firefox设置 appropriate preferences :

var q = require("q");
var FirefoxProfile = require("firefox-profile");

var makeFirefoxProfile = function(preferenceMap, specs) {
    var deferred = q.defer();
    var firefoxProfile = new FirefoxProfile();

    for (var key in preferenceMap) {
        firefoxProfile.setPreference(key, preferenceMap[key]);
    }

    firefoxProfile.encoded(function (encodedProfile) {
        var capabilities = {
            browserName: "firefox",
            firefox_profile: encodedProfile,
            specs: specs
        };

        deferred.resolve(capabilities);
    });
    return deferred.promise;
};

exports.config = {
    getMultiCapabilities: function() {
        return q.all([
            makeFirefoxProfile(
                {
                    "browser.download.folderList": 2,
                    "browser.download.dir": "/path/to/save/downloads",
                    "browser.helperApps.neverAsk.saveToDisk": "application/zip"
                },
                ["specs/*.spec.js"]
            )
        ]);
    },

    // ...
}

这里我们基本上是在说:Firefox,请自动下载 zip 文件,无需进入 /path/to/save/downloads 目录。

关于javascript - 使用 Protractor 在 Firefox 上下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526120/

相关文章:

javascript - Google Apps 脚本双重删除电子表格中的行

javascript - 提交隐藏表单 HTML

javascript - Selenium 网络驱动程序(火狐): dynamically disable Javascript

javascript - Selenium 网络驱动程序 : Can't access element containing onclick and text attributes

python - 在 Selenium 期间更改代理服务器

javascript - setState 在 React 中的 setInterval 中不起作用

javascript - 无法更改 Fancybox 关闭按钮

javascript - Modernizr.touch 在 firefox 浏览器上返回 true

html - 跨度在 Firefox 上未正确对齐

c# - Selenium driver.Url 与 driver.Navigate().GoToUrl()