programing

리피터 내부의 트랙터 요소 찾기

newstyles 2023. 10. 26. 20:47

리피터 내부의 트랙터 요소 찾기

아래는 저의 마크업입니다.

<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();

트랙터로 이와 비슷한 작업을 할 수 있는 방법이 있습니까?

예를 들어 다음과 같이 하십시오.

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

nilsK의 답변이 도움이 되었지만, 완전히 효과가 없었습니다.아래 코드가 효과가 있었습니다.

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

여기 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();

문서: 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();

더 나은 솔루션:

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

요즘 같은 일을 하는 더 읽기 쉬운 방법은

it('test case', async () => {
  let repeaters = element.all(by.repeater('post in posts'));
  let titleElement = repeaters.get(0).element(by.className('title'));
  expect(await titleElement.getText()).toEqual('YourEnteredTitle');
});

언급URL : https://stackoverflow.com/questions/22757340/protractor-find-element-inside-a-repeater