刚开始使用Protractor进行E2E测试。
我想为chrome selenium server的每个实例传递参数(登录名和密码)。 我想要使用不同的用户帐户并行测试相同的spec文件。
这是我的conf.js:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': ['--disable-web-security']
},
count: 10
},
答案 0 :(得分:0)
您可以在命令行上使用Protractor's params
处理此问题。例如,您可以使用不同的用户名/密码开始每个测试,如下所示:
protractor conf.js --params.username user1 --params.password password1
然后,在你的测试中,你会使用这样的东西:
logIntoMyApp(browser.params.username, browser.params.password);
您还可以在配置文件中设置默认值(有关详细信息,请参阅文档)。
答案 1 :(得分:0)
你可以使用量角器的onPrepare
-method。如果正在运行多个功能,则每个功能将运行一次。您可以将数据添加到可在执行期间使用的浏览器对象中。
你能做的就是这样的事情
// A JSON file or something
var login = {
"chrome": {
"user": "usernameChrome",
"pass": "passwordChrome"
},
"firefox": {
"user": "usernameFirefox",
"pass": "passwordFirefox"
}
};
// in your config
// An example configuration file.
exports.config = {
directConnect: true,
// Capabilities to be passed to the webdriver instance.
multiCapabilities: [{
'browserName': 'chrome'
},
{
'browserName': 'firefox'
}
],
// Framework to use. Jasmine is recommended.
framework: 'jasmine',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['example_spec.js'],
// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
},
onPrepare: function() {
return browser.getCapabilities()
.then((capabilities) => {
// Get the current browser you are using
browser.browserName = capabilities.get('browserName').toLowerCase();
// Add the user and pass to the browser-object
browser.user = login[browser.browserName].user;
browser.pass = login[browser.browserName] pass;
});
}
};
// In your spec
describe('logon', function() {
it('should logon', function() {
browser.get('http://www.example.com');
element(by.model('user')).sendKeys(browser.user);
element(by.model('pass')).sendKeys(browser.pass);
element(by.tagName('button')).click();
});
});