2015-09-04 42 views
2

我想要訪問ng-repeat元素的子元素,但我遇到了麻煩。量角器 - 獲取元素的子元素?

我已經搜遍了關於這個問題以及我找到的解決方案並沒有爲我工作。其中一個解決辦法是做這樣的事情:

var parent = element(by.repeater('')); 
var child = parent.element(by.....); 

當我嘗試child線我不能看到父元素的元素功能..

http://prikachi.com/images/11/8338011u.png

如果你看到的截圖上面你會看到我試圖測試的頁面代碼的結構。

我需要訪問頭像圖像的alt屬性並獲取其值(即用戶的用戶名)。

我想到的一件事是在ng-repeat行上使用.getInnerHTML(),它將返回一個包含所有代碼的字符串。從那裏我可以通過字符串操作找到alt屬性及其值,但這看起來太粗暴了,我相信必須有更好的方法。

簡單地說,我希望能夠從中繼器獲得第4行,並獲得用戶在第4行的用戶名,這就是我想要的。

回答

3

試試這個,

var parent = element(by.repeater('f in feed')); 
var child = parent.all(by.xpath('//img[@alt="Pundeep"]')).first() 

(或)

var parent = element(by.repeater('f in feed')); 
var child = parent.all(by.xpath('//img[@alt="Pundeep"]')).get(0) 
+0

感謝您的幫助。但我正在嘗試做一些不同的事情,例如我想在中繼器中獲得第四個元素(或者上面示例中的第一個元素),然後獲取alt屬性的值並查看它是否有正確的用戶名。 1.獲取中繼器中的第4行,2.獲取用戶名圖像的alt標籤的值,3.將該值保存在變量中供以後使用。 – Darkbound

2

你可以直接用量角器element.all()get()定位。這是如何 -

var child = element.all(by.repeater('parent_locator')).get(3); //gets 4th element in repeater. Its a 0 based index. 
child.getAttribute('alt').then(function(user){ 
    var username = user; //username contains the alt text 
}); 

希望這會有所幫助。