使用parentElementArrayFinder定位父元素

时间:2017-08-14 13:18:55

标签: javascript selenium selenium-webdriver protractor

ElementFinder对象上有一个parentElementArrayFinder attribute,根据我的理解,可能会返回当前的父元素:

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

但是,它没有记录为Protractor's public API的一部分。 parentElementArrayFinder是一个可靠而稳定的方法来定位父元素,并且总是返回与myElement.element(by.xpath(".."))相同的元素吗?

2 个答案:

答案 0 :(得分:2)

要总结评论,现有答案,我的观察结果和源代码parentElementArrayFinder应当且只能在您获得parentElementArrayFinder for的元素从元素“链接”时使用。

这将有效:

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

答案 1 :(得分:1)

我找到了ElementFinder here的代码,其代码为parentElementArrayFinder here

从我在代码中找到的内容。如果parentElementArrayFinder不存在,则会引发错误。

super();
if (!elementArrayFinder) {
  throw new Error('BUG: elementArrayFinder cannot be empty');
}
this.parentElementArrayFinder = elementArrayFinder;

由此,我们可以安全地假设它将永远存在,所以我认为它是安全的。