Подтвердить что ты не робот

Поиск родительских элементов с parentElementArrayFinder

Существует атрибут parentElementArrayFinder, доступный для объекта ElementFinder, который, как я понимаю, может возвращать родительский элемент текущего

var myElement = $(".myclass");
var parentElement = myElement.parentElementArrayFinder;

Он, однако, не документирован как часть API-интерфейс Protractor. Является parentElementArrayFinder надежным и стабильным методом поиска родительского элемента и всегда возвращает тот же элемент, что и myElement.element(by.xpath(".."))?

4b9b3361

Ответ 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;

Из этого можно смело предположить, что он всегда будет там, поэтому я думаю, что он безопасен в использовании.