2017-07-28 67 views
0

刚刚开始使用量角器进行E2E测试。使用量角器为每个浏览器传递参数

我想为每个铬硒服务器实例传递参数(登录名和密码)。 我想用不同的用户帐户并行测试相同的spec文件。

这是我conf.js:

capabilities: { 
     'browserName': 'chrome', 
     'chromeOptions': { 
      'args': ['--disable-web-security'] 
     }, 
     count: 10 
    }, 

回答

0

你可以用Protractor's params在命令行上处理这个问题。例如,你可以用这样一个不同的用户名/密码启动每个测试:

protractor conf.js --params.username user1 --params.password password1 

然后,在您的测试,你会使用它们像这样:

logIntoMyApp(browser.params.username, browser.params.password); 

您还可以设置默认值在你的配置文件中(详见文档)。

+0

思卤水为您重播。但在我的情况下,我想要为每个创建的实例传递参数。我在conf.js'count:10'中使用了attribut属性。因此,所有chrome实例都将使用user1作为登录名,password1作为密码。我想例如第一个实例使用Login1和Password1,第二个使用Login2和Password2 .... –

+0

在这种情况下,您的问题没有足够的信息。我建议更充实,并包括你真正想要完成的事情。例如。你想要做负载测试吗?祝你好运。 – Brine

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(); 
 
    }); 
 
});

相关问题