目前我正在使用by.repeater
来获取表格的所有行,然后检查每一行以查看它是否与我所需的信息相匹配。这似乎太多余了。我怎样才能做得更好?
element.all(by.repeater("userRole in roles")).each(function(row){
row.getText().then(function(text){
if(text.indexOf(ROLE_NAME) > -1){
expect(row.$('.role').getText()).toContain(ROLE_NAME);
}
});
});
答案 0 :(得分:1)
.each
将解析承诺,因此我们可以收集行中的所有文本,然后在数组上使用toContain
。
var textRows = element.all(by.repeater("userRole in roles")).each(function(row){
return row.getText();
});
expect(textRows).toContain(ROLE_NAME);
另一个选择是使用Array.prototype.some
来使用函数来验证行:
var textRows = element.all(by.repeater("userRole in roles")).each(function(row){
return row.getText();
});
var hasAValidRow = textRows.some(function(row){ return row.indexOf(ROLE_NAME) > -1; });
expect(hasAValidRow).toBe(true);
答案 1 :(得分:0)
我遇到了类似的问题,经过几个小时后我才开始使用:
var rows = $$('#ss-personal-phone-action-panel');
rows.each(function(row) {
var rowElems = row.$$('td.destination');
expect(rowElems.count()).toBe(1);
expect(rowElems.get(0).getText()).toMatch(testTelephone);
});
我希望这个帮助