量角器在转发器中找到元素

Edg*_*nez 21 angularjs angularjs-e2e protractor

下面是我的标记

<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>
Run Code Online (Sandbox Code Playgroud)

我正在尝试用title类来获取元素.

我用来访问转发器的代码是:

postsList = element.all(by.repeater('post in posts'));
Run Code Online (Sandbox Code Playgroud)

有没有办法通过在jQuery中执行以下操作来获取元素:

var titleText = $("tr:first").find(".title").text();
Run Code Online (Sandbox Code Playgroud)

有没有办法用量角器做类似的事情?

nil*_*lsK 30

这适用于你的例子:

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


nde*_*ker 21

nilsK给出的答案对我有所帮助,但并没有完全发挥作用.下面的代码做了诀窍:

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


Sil*_*oia 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();
Run Code Online (Sandbox Code Playgroud)