我有一个创建页面,其中有一个文本框和下拉列表,我想为每个下拉列值创建一个项目。创建单个项目后,它会从那里重定向到编辑页面,我们必须创建页面并迭代地创建具有第二个下拉值的项目。
我正在尝试迭代下拉值并尝试在每个条件下创建项目,但测试在创建初始项目后存在,并且它不会为第二个下拉值创建项目。
describe('When create case form is valid', function(){
it('Should be creating cases', function(){
browser.get("xyz.com");
browser.waitForAngular();
element(by.id("create")).click();
element.all(by.options('caseSubType.specID as caseSubType.specName for caseSubType in vm.newCaseSubTypes')).each(function(elem, index) {
elem.getText().then(function (text) {
elem.click();
element(by.model('vm.newCaseSummary')).sendKeys('test');
$('button[ng-disabled="!vm.hasClientIDForNewCase()"]').click();
browser.waitForAngular();
browser.get("xyz.com");
browser.waitForAngular();
element(by.id("create")).click();
})
})
});
});
创建页面的HTML是:
<table>
<tr>
<td>Summary</td>
<td><input type="text" class="form-control input-sm" id="txtNewCaseSummary" ng-model="vm.newCaseSummary" ng-disabled="!vm.hasClientIDForNewCase()" name="caseSummary" required></td>
</tr>
<tr>
<td>Type</td>
<td>
<select class="form-control input-sm" ng-model="vm.newCaseSubTypeID" ng-options="caseSubType.specID as caseSubType.specName for caseSubType in vm.newCaseSubTypes" name="caseSubType">
</td>
</tr>
<tr>
<td>
<button id="create" type="submit" class="btn btn-primary" ng-disabled="!vm.hasClientIDForNewCase()">Create New Case</button>
</td>
</tr>
</table>
如果这不是正确的方法,或者请提供当前方法的解决方案,任何人都可以建议其他方法。
答案 0 :(得分:0)
我建议递归地做:
var cases = element.all(by.options('caseSubType.specID');
createCases(cases, 0);
var createCases = function(cases, i) {
if (i = cases.length)
return;
browser.get("xyz.com");
//browser.waitForAngular(); NOT needed, if it's an angular page
element(by.id("create")).click();
cases[i].click();
element(by.model('vm.newCaseSummary')).sendKeys('test');
$('button[ng-disabled="!vm.hasClientIDForNewCase()"]').click();
createCases(cases, i + 1);
}