2015-09-04 58 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 
}); 

希望这会有所帮助。