如何解决如何使用Selenium C#WebDriver查找所有父元素?
如果我正确理解了您的问题,则需要先找到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代码段,然后一次返回所有元素。
解决方法
我有一个By
类的变量。我希望调用FindElements
以返回相应的元素以及this的所有父元素By
。我该怎么做呢?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。