gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:27:29 28 4
gpt4 key购买 nike

我有一个 By 类变量。我希望调用 FindElements 返回相应的元素以及此 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 - 如何使用 Selenium C# WebDriver 查找所有父元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9021074/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com