Protractor find element inside a repeater

走远了吗. 提交于 2019-11-27 05:49:22

问题


Below is my markup

<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>

I'm trying to get the element with the title class.

The code I use to access the repeater is:

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

Is there a way to get the element by doing something like the following in jQuery:

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

Is there a way of doing something similar to this with protractor?


回答1:


this should work for your example:

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



回答2:


The answer from nilsK helped me, but didn't work completely. The code below did the trick:

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



回答3:


you have to find a element inside a array as explained here 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();



回答4:


From the docs: https://github.com/angular/protractor/blob/master/docs/locators.md

var clickable = element.all(by.repeater('post in posts')).first().all(by.tagName('td')).first();



回答5:


An even better solution:

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



来源:https://stackoverflow.com/questions/22757340/protractor-find-element-inside-a-repeater

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!