这是我的问题:我希望能够用特定的语言设置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-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();
}
};
同样,在理论上,我只需要在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仍然是英文版。
有没有人有解决方案,或者我做错了什么?