Транспортир получает элемент по модели в массиве повторителей

Например, на HTML-странице:

<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>
  <td><input type="checkbox" ng-model="post.active" 
        id="{{post.id}}" /></td>
 </tr>

Затем я хочу что-то вроде:

element.all(by.repeater('post in posts')).then(function(posts) {
   var activePost = posts[0].element(by.model('active'));
   expect(activePost).toEqual(true);
});

Это возвращает невозможность найти элемент. Я основываю это на этом вопросе и ответе: транспортир находит элемент внутри повторителя


person trees_are_great    schedule 23.01.2015    source источник


Ответы (1)


Значение, переданное в by.model(), должно быть таким же, как на странице:

var activePost = posts[0].element(by.model('post.active'));

Обратите внимание, что переменная activePost будет ссылаться на элемент, поэтому, даже если ее значение будет false (флажок не установлен), ожидание expect(activePost).toEqual(true); будет выполнено. Вам нужно подтвердить значение флажка, используя isSelected():

expect(activePost.isSelected()).toBeTruthy();
person alecxe    schedule 23.01.2015