2017-01-25 104 views
1

我試圖在嵌套中繼器中找到一個元素,但我不知道如何解決它。在量角器中找到嵌套中繼器中的元素

默認情況下,HTML看起來像以下(editted它爲便於理解

<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,您顯示在頁面上三個項目上的按鈕。所以點擊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按鈕被禁用。

所以我的問題是:從默認的頁面(點擊view more按鈕之前)我怎樣才能找到的元素文本6

測試應該做的:

  • 搜索前三項爲elementA
  • 如果沒有找到,點擊view more和搜索接下來的三個項目爲elementA
  • 如果沒有找到,點擊view more再次搜索下面三個項目elementA

以下代碼搜索機智興中繼器,但我不知道如何嵌套中繼器之間的搜索

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

回答

0

這取決於如果點擊「更多」,在之後出現的元素是存在的,但不顯示或者不顯示在DOM的。 假設元件是在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 
     }) 
    }) 

首先獲得所需的元素,然後讓它通過點擊遞歸的「查看更多」按鈕被顯示。