2013-11-22 55 views
3

有没有办法通过中继器查找元素时访问迭代器索引/键?如何使用量角器+角获得迭代器索引/键?

protractor.By.repeater("(id,cat) in pets") 

在这种情况下,我正在寻找访问“id”的猫。 “id”不是表中显示值的列之一,它用于导航,如ng-click="goto('/pets/'+cat.id)"。有一个在HTML没有约束力,如{{id}}{{cat.id}}这样做如下:

ptor.findElements(protractor.By.repeater("(id,cat) in pets").column('cat.id')) 

返回一个空的元素:[]

我也未果,试图做这样的事情:

ptor.findElement(protractor.By.repeater("(id,cat) in pets").row(0).column('cat.id')) 

访问该特定索引的正确方法是什么?

这是一个被JMR答案的非缩短语法:

 
ptor.findElements(protractor.By.repeater('(id, cat) in pets')).then(function (arr) { 
    arr[0].evaluate('cat.id').then(function (id) { 
     console.log(id); 
    }); 
});

回答

10

您正在寻找评估的东西,这不是在页面上,这样的“行”和“列”方式赢得”工作。如果你只是使用中继器,你将得到所有行的数组。然后可以使用evaluate命令在该元素的上下文中评估Angular表达式。例如(使用缩短的语法),

element.all(by.repeater('(id, cat) in pets')).then(function(arr) { 
    arr[0].evaluate('cat.id'); // This is a promise which resolves to the id. 
}); 
+0

了不起,这正是我所期待的。 – Nik