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) {
        控制台.log(id);
    });
});
4

1 回答 1

10

您要评估页面上没有的内容,因此 'row' 和 'column' 方法将不起作用。如果您只使用中继器,您将获得所有行的数组。然后,您可以使用该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.
});
于 2013-11-25T18:06:17.500 回答