iLe*_*ing 4 webdriver protractor
如果出于任何疯狂的原因,我需要打开100个窗口/标签并导航到100个不同的链接,我该怎么做?我可以同时在所有100个测试中运行某些测试吗?
假设我有一个数组['a','b','c','d','e'],我需要测试一些表单是否适用于所有这些值.如何打开5个实例(或窗口或其他可以独立控制的实例)并同时测试它们?例如:
upd:我想我可以使用打开多个标签
browser.executeScript("window.open('https://angularjs.org/', 'tab" + i + "')")
Run Code Online (Sandbox Code Playgroud)
但这并不允许我真正并行运行测试,因为我必须跳转到tab,假设所有选项卡都打开并加载:
1)从数组中选择值2)修改输入框3)单击提交按钮4)切换到下一个选项卡5)重复
是的,这仍然比在一个选项卡中测试所有内容,循环遍历数组并每次重置页面更快,但我需要找到更好的方法
han*_*uan 11
启动100种不同的浏览器听起来非常低效,因此它们可以运行非常相似的场景.如果这些不同的值启动相同的流程,只是略有不同的输出,您可能希望使用单元测试,并使用量角器运行一个或几个端到端测试.
但要回答你的问题,有两种方法.
1)multiCapabilities:在这里,每个浏览器将运行完全不同的测试.(如果测试类似,您可能希望重用通用组件).
exports.config = {
specs: [
// leave this empty if you have no shared tests.
],
multiCapabilities: [{
'browserName': 'chrome',
'specs': ['test1.js']
}, {
'browserName': 'chrome',
'specs': ['test2.js']
}, {
'browserName': 'chrome',
'specs': ['test3.js']
}],
};
Run Code Online (Sandbox Code Playgroud)
文件:https://github.com/angular/protractor/blob/master/docs/referenceConf.js
2)browser.forkNewDriverInstance():在这里,你只运行一个测试,但测试可以产生n不同的浏览器.缺点是,由于一切只进行了1次测试,如果100次中有1次失败,那么你只会遇到一次失败.
var runtest = function(input, output) {
var newBrowser = browser.forkNewDriverInstance(true); // true means use same url
// note I used newBrowser.element instead of element, because you are accessing the new browser.
newBrowser.element(by.model(...)).sendKeys(input).click();
expect(newBrowser.element(by.css('blah')).getText()).toEqual(output);
};
describe('...', function() {
it('spawn browsers', function() {
browser.get(YOUR_COMMON_URL);
runtest('input1', 'output1');
runtest('input2', 'output2');
runtest('input3', 'output3');
runtest('input4', 'output4');
});
});
Run Code Online (Sandbox Code Playgroud)
Doc:https://github.com/angular/protractor/blob/master/docs/browser-setup.md#using-multiple-browsers-in-the-same-test
| 归档时间: |
|
| 查看次数: |
7681 次 |
| 最近记录: |