Я пытаюсь получить доступ к текстовому атрибуту дочернего элемента, но каждый раз получаю нулевое значение. Модель DOM выглядит так, как показано ниже
<div ng-repeater='abc'>
<span class='xyz'>Mango</span>
</div>
<div ng-repeater='abc'>
<span class='xyz'>Apple</span>
</div>
Я пробовал код ниже:
var parent = element(by.repeater('abc'));
var child = parent.all(by.xpath('//span[@class = "xyz"]'));
for (let index = 0; index < parent.count(); index++) {
console.info("Value" + child.getText());
}
Все время я получаю ошибку как Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Я уже пробовал увеличить тайм-аут до 30 секунд, и страница загружается правильно, без проблем с синхронизацией, но все равно появляется ошибка.
любая помощь будет оценена по достоинству.
@AaryaHareendranath нет конкретной причины, по которой я даже пробовал напрямую с element.all (локатор дочерних элементов), но дело в том, что я не получаю вывода в консоли из-за проблем с асинхронностью. Если вы можете помочь мне с этой проблемой, возможно, я смогу увидеть некоторые результаты в своей консоли.





element.all(by.repeater('abc')).getText().then(function(txts){
txts.forEach(function(txt){
console.info(txt);
})
})
// the `getText()` api will get visible text of all descendants of current element,
// that's why parent node `div` can get the text on child node `span`
Это сработало. Пожалуйста, помогите мне понять код, так как я не могу понять, почему текст родительского элемента может быть получен?
@SandeepRaulo .count() возвращает обещание, поэтому вы не можете напрямую использовать его в циклах
Есть ли какая-то конкретная причина, по которой вы хотите получить доступ через родительский элемент, когда вы можете получить к нему доступ через один xpath (без отдельных элементов для родительского и дочернего)