2015-09-04 5 views
2

Я пытаюсь получить доступ к дочернему элементу элемента ng-repeat, но у меня возникают проблемы с этим.Транспортир - получить дочерний элемент элемента?

Я искал вокруг проблемы и решения, которые я нашел, не работали для меня. Одним из таких решений было сделать что-то вроде этого:

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

Когда я пытаюсь child линию я не могу видеть функцию элемента на родительский элемент ..

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

Если вы видите скриншот выше вы увидите структуру кода страницы, которую я пытаюсь проверить.

Мне нужно получить доступ к атрибуту alt изображения аватара и получить его значение (это имя пользователя пользователя).

Одна вещь, которая пришла мне на ум, заключается в использовании .getInnerHTML() в строке ng-repeat, которая вернет строку со всем этим кодом. Оттуда я могу найти атрибут 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 
}); 

Надеюсь, это поможет.