2017-01-25 8 views
1

중첩 된 중계기에서 요소를 찾으려고하는데 어떻게 해결할 수 있는지 잘 모르겠습니다. HTML은 다음과 같습니다 기본적으로각도기의 중첩 된 중계기에서 요소 찾기

당신에게 페이지에 세 가지 이상의 항목을 보여줍니다 페이지 view more에 버튼이 있습니다

<div ng-repeat = "Repeater1"> 
    <div ng-repeat = "Repeater2"> Text1 </div> 
    <div ng-repeat = "Repeater2"> Text2 </div> 
    <div ng-repeat = "Repeater2"> Text3 </div> 
</div> 

(쉽게 이해을 위해 그것을 편집 해). 그래서 view more 버튼을 클릭 한 후 HTML 페이지에 표시 할 더 많은 항목이없는 경우

<div ng-repeat = "Repeater1"> 
    <div ng-repeat = "Repeater2"> Text1 </div> 
    <div ng-repeat = "Repeater2"> Text2 </div> 
    <div ng-repeat = "Repeater2"> Text3 </div> 
</div> 

<div ng-repeat = "Repeater1"> 
    <div ng-repeat = "Repeater2"> Text4 </div> 
    <div ng-repeat = "Repeater2"> Text5 </div> 
    <div ng-repeat = "Repeater2"> Text6 </div> 
</div> 

view more 버튼이 비활성화됩니다 다음과 같습니다.

그래서 내 질문은 : 어떻게 요소 텍스트 6을 찾을 수있는 기본 페이지에서 (view more 버튼을 클릭하기 전에)?

시험은 어떻게해야하나요 :

  • 발견되지 않는 경우는 elementA
  • 에 대한 최초의 세 가지 항목을 검색, view more을 클릭하고 발견되지 않는 경우는 elementA
  • 을 위해 다음 세 가지 항목을 검색, 클릭 view more을 다시 검색하여 elementA

다음 코드를 검색하십시오. 클릭 "추가"다음에 나타나는 요소가 존재하지만 표시하거나 전혀 DOM에 표시되지 않는 경우 중계기를 힝하지만 중첩 된 리피터 사이를 검색하는 방법을 잘 모르겠어요 것은

let filteredList = this.Repeater2Elem.filter((item) => { 
     return item.getText().then((text) => { 
      return bundle === "text 2"; 
     }); 
    }).first().element(by.buttonText('Element Found')).click(); 

답변

0

이 달려있다. 요소가 DOM에 있지만 표시되지 않는다고 가정합니다.

function getAppearence(elem) { 
    return elem.isDispalyed().then(function (isDispalyed) { 
     if (isDispalyed) 
      return elem;//will return the element to continue working on it, otherwise return true 
     else { 
      return viewMoreButton.click().then(function() { 
       return getAppearence(elem); 
      }); 
     } 
    }); 
} 

this.Repeater2Elem.filter(function (item, index) {  
    return item.getText().then(function (text) { 
     return text === "textX"; 
    }); 
}).then(function (elem) { 
    if (elem.length ==1) 
     return getAppearence(elem[0]).then(function (elem) { 
      return elem 
     }) 
    }) 

먼저 필요한 소자를 얻을 다음 버튼이 재귀 '추가보기'를 클릭하여 디스플레이 될 얻을 (아래 코드는 테스트되지 않음).