首页 > 解决方案 > Selenium如何确定元素是否有孩子?

问题描述

我通过 c# 使用 Selenium。我使用这个 XPath 来获取所有子元素

element.FindElements(By.XPath("./child::*"));

虽然如果没有孩子,它会在超时后抛出错误。我正在寻找一种简单的方法来确定它是否有孩子以避免异常。

标签: c#seleniumselenium-webdriverxpathxpath-1.0

解决方案


根据您要获取父节点的所有子节点的问题,您可以在xpath中使用具有following-sibling::*属性的方法,如下所示:FindElements()

  • 示例代码块:

    List<IWebElement> textfields = new List<IWebElement>();
    textfields = driver.FindElements(By.XPath("//desired_parent_element//following-sibling::*"));
    

    注意:当FindElements()隐式显式等待结合使用时,FindElements()一旦找到的集合中的项目超过 0 个,方法将立即返回,或者如果达到超时将返回一个空列表。

  • XPath 详细信息:

    • 描述:此xpath技术用于定位特定节点的兄弟元素。
    • 说明:xpath表达式获取使用desired_pa​​rent_element定位的父元素的所有兄弟元素。

推荐阅读