使用量角器在Firefox上下载文件

时间:2015-07-20 20:50:54

标签: javascript firefox selenium-webdriver jasmine protractor

我需要在带有量角器的Firefox上下载一个zip文件。 点击下载链接,弹出Windows对话框,询问打开/保存文件。那我该怎么办?我需要传递给驱动程序的args是什么? 使用chrome我可以做到这一点  下载: {                   ' prompt_for_download':false },

但我该如何处理firefox。

1 个答案:

答案 0 :(得分:2)

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

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

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目录。