在量角器测试用例中迭代地重复测试条件

时间:2015-09-24 06:26:53

标签: angularjs protractor

我有一个创建页面,其中有一个文本框和下拉列表,我想为每个下拉列值创建一个项目。创建单个项目后,它会从那里重定向到编辑页面,我们必须创建页面并迭代地创建具有第二个下拉值的项目。

我正在尝试迭代下拉值并尝试在每个条件下创建项目,但测试在创建初始项目后存在,并且它不会为第二个下拉值创建项目。

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>

如果这不是正确的方法,或者请提供当前方法的解决方案,任何人都可以建议其他方法。

1 个答案:

答案 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);
}