2014-03-31 48 views
18

内元素下面是我的标记量角器找到一个中继

<tr ng-repeat="post in posts"> 
    <td ng-click="activePost(post)" class="title">{{post.title}}</td> 
    <td><button class="btn btn-danger" ng-click="delete(post)">Delete</button> 
    </td> 
</tr> 

我试图获得与title类的元素。

我用来访问中继器的代码是:

postsList = element.all(by.repeater('post in posts')); 

有没有办法通过做一些像jQuery的下面,以获得元素:

var titleText = $("tr:first").find(".title").text(); 

有没有一种方式用量角器做类似的事情?

回答

28

这应该为你工作,例如:

element.all(by.repeater('post in posts')).then(function(posts) { 
    var titleElement = posts[0].element(by.className('title')); 
    expect(titleElement.getText()).toEqual('YourEnteredTitle'); 
}); 
+0

无法在文档中找到它。谢谢,那是做的。 –

+1

感谢 - Voles指出第一行缺少的括号 – Sam

+1

谢谢@Sam,更正了示例 – nilsK

20

nilsK答案帮我,但并没有完全工作。下面的代码的伎俩:

element.all(by.repeater('post in posts')).then(function(posts) { 
    var titleElement = posts[0].element(by.className('title')); 
    expect(titleElement.getText()).toEqual('YourEnteredTitle'); 
}); 
+1

这与nilsK的答案有什么不同?这是从字面上复制粘贴... – Jashaszun

+0

nilsK的答案已更新与我的建议 – Voles

2

一个更好的解决方案:

expect( $$(by.repeater('post in posts')).get(0).$('.title').getText() ).toBe('Your title');

5

你必须找到一个阵列内的元素作为解释这里https://github.com/angular/protractor/issues/877

var items = element.all(by.repeater('userGroup in userGroups')).filter(function(item) { 
    return item.element(by.binding('userGroup.name')).getText().then(function(label) { 
      return label === 'MyGroupName'; 
    }); 
    }); 
items.get(0).element(by.css('.buttongochose')).click(); 
+0

我认为这是最好的答案,因为它允许您通过文本过滤。 – Oliver