1

我正在尝试使用by.repeater实现按行属性搜索,并使用 ui-grid评估e2e。

这个想法是将来自 by.repeater 的结果映射到一个新对象,该对象具有我从评估和行中获得的下面的对象 id,以便我可以按 id 对新的对象数组进行过滤。像这样的东西:

return this.getGrid( gridId ).all( by.repeater('(rowRenderIndex, row) in  rowContainer.renderedRows track by $index') ).map(function(row, index){
        return {
            index: index,
            row: row,
            id: row.evaluate('row.entity.id') 
        };                
    }).then(function(maps){            
        return maps.find(function(e){
            return e.id === rowId;                   
        });  
    });    

当我使用或返回行对象时,映射函数似乎挂起。根据这个https://github.com/angular/protractor/issues/392: Add map() function to element.all它应该可以工作,但它没有。任何的想法?

谢谢,大卫。

4

1 回答 1

1

您可以直接使用filter()方法根据任何条件过滤行。看下面的例子。

return this.getGrid(gridId).all(by.repeater('(rowRenderIndex, row) in  rowContainer.renderedRows track by $index')).filter(function(row_element){
    return row_element.evaluate('row.entity.id').then(function(Current_rowid){
       return Current_rowid == rowId;
   })
}).first()
于 2016-09-20T13:18:15.313 回答