如何使用Selenium C#WebDriver查找所有父元素?

我有一个By类的变量。我希望调用FindElements以返回相应的元素以及this的所有父元素By。我该怎么做呢?

回答:

如果我正确理解了您的问题,则需要先找到By元素,然后再找到父元素,直到找到根为止。

您可以使用XPath来获取父元素,直到到达页面根目录为止。所以像这样:

public ReadOnlyCollection<IWebElement> FindElementTree(By by)

{

List<IWebElement> tree = new List<IWebElement>();

try

{

IWebElement element = this.driver.FindElement(by);

tree.Add(element); //starting element

do

{

element = element.FindElement(By.XPath("./parent::*")); //parent relative to current element

tree.Add(element);

} while (element.TagName != "html");

}

catch (NoSuchElementException)

{

}

return new ReadOnlyCollection<IWebElement>(tree);

}

(可选)您可以在body元素上停下来,而不是html一个。

还要注意,这是相当慢的,特别是如果其嵌套的元素很深。更快的替代方法是使用ExecuteScript运行使用相同逻辑的javascript代码段,然后一次返回所有元素。

以上是 如何使用Selenium C#WebDriver查找所有父元素? 的全部内容, 来源链接: utcz.com/qa/422381.html

回到顶部