nightwatch:使用特定的firefox配置文件分发测试

时间:2017-06-16 12:39:42

标签: javascript selenium firefox profile nightwatch.js

这是我的问题:我希望能够用特定的语言设置firefox来运行我们的e2e测试,并且能够分发它们。

所有版本:

Mozilla Firefox 53.0.3

Selenium 3.4.0(从npm开始)

geckodriver 0.17.0(从npm开始)

nightwatch.conf.js:

const seleniumServer = require('selenium-server');

module.exports = {
    "src_folders": [
        "test/functional/features"
    ],
    "custom_commands_path": [
        "test/functional/commands/commun",
        "test/functional/commands/project"
    ],
    "output_folder": false,
    "selenium": {
        "start_process": true,
        "server_path": seleniumServer.path,
        "port": 4444,
        "cli_args": {
            "webdriver.gecko.driver": "./node_modules/.bin/geckodriver"
        }
    },
    "test_settings": {
        "default": {
            "selenium_port": 4444,
            "selenium_host": "localhost",
            "silent": true,
            "screenshots": {
                "enabled": false
            },
            "detailed_output": false,
            "desiredCapabilities": {
                "javascriptEnabled": true,
                "acceptSslCerts": true,
                "marionette": true,
                "browserName": "firefox"
            }
        }
    }
};

总的来说,我试过两种方式:

  • 动态创建firefox配置文件,然后使用它。

在理论上,我可以使用之前的(每个)并使用firefox-profile。在实践中,它创建我的个人资料但不使用它。

const FirefoxProfile = require('firefox-profile');

function setProfile(browser, profile, callback) {
    profile.encoded(function (encodedProfile) {
        browser.options.desiredCapabilities['firefox_profile'] = encodedProfile;
        callback();
    });
}

function setPrefToFrench(browser, done) {
    var FFprofile = new FirefoxProfile();

    FFprofile.setPreference('general.useragent.locale', 'fr');
    FFprofile.setPreference('intl.accept_languages', 'fr');

    setProfile(browser, FFprofile, done);
}

module.exports = {
    'default' : {
        isLocal : true
    },

    beforeEach: function(browser, done) {
        setPrefToFrench(browser, done);
        done();
    }
};
  • 保存个人资料(为什么不ziped)并将其包含在项目中

同样,在理论上,我只需要在nightwatch.conf.js上添加它

"selenium": {
    "start_process": true,
    "server_path": seleniumServer.path,
    "port": 4444,
    "cli_args": {
        "webdriver.gecko.driver": "./node_modules/.bin/geckodriver",
        "webdriver.firefox.profile": "path/to/my/profile(or base64 zip)"
    }
},

但总是一样,我的Firefox仍然是英文版。

有没有人有解决方案,或者我做错了什么?

0 个答案:

没有答案