Поиск родительских элементов с parentElementArrayFinder
Существует атрибут parentElementArrayFinder
, доступный для объекта ElementFinder
, который, как я понимаю, может возвращать родительский элемент текущего
var myElement = $(".myclass");
var parentElement = myElement.parentElementArrayFinder;
Он, однако, не документирован как часть API-интерфейс Protractor. Является parentElementArrayFinder
надежным и стабильным методом поиска родительского элемента и всегда возвращает тот же элемент, что и myElement.element(by.xpath(".."))
?
Ответы
Ответ 1
Чтобы обобщить комментарии, существующий ответ, мои наблюдения и исходный код parentElementArrayFinder
следует использовать и использовать, только если элемент, который вы получили parentElementArrayFinder
для, был "привязан" к элементу.
Это будет работать:
var parent = element(by.css(".parent"));
var child = parent.element(by.css(".child"));
child.parentElementArrayFinder # link to "parent" - defined
Это не будет:
var child = element(by.css(".child"));
child.parentElementArrayFinder # no link to "parent" - undefined
Ответ 2
Я нашел код для ElementFinder здесь, который имеет опору для parentElementArrayFinder
здесь.
Из того, что я нашел в коде. Он выдает ошибку, если parentElementArrayFinder
не существует.
super();
if (!elementArrayFinder) {
throw new Error('BUG: elementArrayFinder cannot be empty');
}
this.parentElementArrayFinder = elementArrayFinder;
Из этого можно смело предположить, что он всегда будет там, поэтому я думаю, что он безопасен в использовании.