【发布时间】:2012-12-12 16:58:05
【问题描述】:
有这个元素有子元素,那些子元素又有子元素等等。我想获取所有元素的后代元素。谢谢。
【问题讨论】:
标签: java collections selenium webdriver
有这个元素有子元素,那些子元素又有子元素等等。我想获取所有元素的后代元素。谢谢。
【问题讨论】:
标签: java collections selenium webdriver
试试这个:
(Java)
List<WebElement> childs = rootWebElement.findElements(By.xpath(".//*"));
(C#)
IReadOnlyList<IWebElement> childs = rootWebElement.FindElements(By.XPath(".//*"));
【讨论】:
By.cssSelector("*") - 这应该与By.xpath(".//*") 的工作方式相同,但不能 100% 确定它不会搜索所有文档 (w3.org/TR/CSS2/selector.html)。为什么 XPath 解决方案不适合您?
rootWebElement 是 WebElement 类的一个实例。 WebElement 类实现了SearchContext 接口以及WebDriver 类。所以搜索是在某个特定元素内完成的,而不是在整个页面内。
List<WebElement> topLevelChildren = rootWebElement.findElements(By.xpath("./*"));。
试试这个
List<WebElement> allDescendantsChilds = rootWebElement.findElements(By.xpath("//tr[@class='parent']//*"));
以上内容将为您提供 parent tr
的所有后代子元素(不仅是直接子元素)【讨论】:
试试这个:
List<WebElement> childs = rootWebElement.findElements(By.tagName(".//*"));
【讨论】: