最好的方法是通过Protractor验证表中是否存在行?

时间:2014-03-19 21:38:07

标签: angularjs protractor

目前我正在使用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);
          }
        });
      });

2 个答案:

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

我希望这个帮助