テーブルの内容をテストしようとしていますが、それを達成するためにすべての行と列をループする必要があります。私の現在のコードは次のとおりです。
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(....) 内でカウンターがインクリメントされるため、テストは失敗します。私の行の長さは予想どおり2であり、その期待は合格ですが、行[i].all(...)内でもカウンターがインクリメントされる理由はまだ混乱しています。私が得ているエラーは次のとおりです。
失敗: 未定義のプロパティ 'application' を読み取ることができません
これは、インデックス 2 でアプリケーションにアクセスしようとしていて、配列にその要素がないためです。