1

我正在尝试测试我的表格的内容,我需要遍历所有行和列才能完成此操作。我目前的代码是:

it('test', function () {
        var appRowLocator = by.repeater('appRow in model.getAppList()');

        browser.wait(function () {
            return element(appRowLocator).isPresent();
        }, 1000);

        var i = 0;
        element.all(appRowLocator).then(function(rows){
            expect(rows.length).toBe(2);
            while(i < 2){
                rows[i].all(by.tagName('td')).then(function(cols){
                    expect(cols.length).toBe(8);
                        expect(cols[0].getText()).toBe(summary.applicationSummaries[i].application.name);
                        expect(cols[2].getText()).toBe("");
                });
                i++;
            }
        })
    });

我正在访问单元格的内容,但测试仍然失败,因为计数器在 rows[i].all(....) 内递增。我的行长度是预期的两个,并且期望通过了,但我仍然很困惑为什么计数器在 rows[i].all(...) 内也增加。我得到的错误是:

失败:无法读取未定义的属性“应用程序”

这是因为它试图访问索引为 2 的应用程序,而数组中没有该元素。

4

1 回答 1

1

你不需要then()这里。使用get()expect()为您解决承诺:

var cells = rows[i].all(by.tagName('td'));

expect(cells.count()).toEqual(8);
expect(cells.get(0).getText()).toBe(summary.applicationSummaries[i].application.name);
expect(cols.get(2).getText()).toBe("");
于 2015-03-18T13:04:48.447 回答