我有一个非常简单的问,我有一个div在HTML页面中,我可以通过自己的XPath存取权限是://div[2]/div/div[2]/div[2]/div[2]
。
我想要一个XPath可以给这个div的所有子元素,但是我找不到它。我需要使用Selenium的findElements方法获取元素,但是我测试过的方法不起作用:
我的HTML代码如下所示:
<div>
<input/>
<span/>
<p></p>
</div>
和我想这样使用的XPath:
//div[2]/div/div[2]/div[2]/div[2]/child
我的Java Selenium脚本是这样的:
List<WebElement> listElement = driver.findElements(By.xpath(xpath));
for(WebElement element : listElement) {
System.out.println(element.getAttribute("id"));
}
我应该使用什么XPath来获取的子级div
?
编辑1:我确实使用了*,并且可以正常工作,但是当我计算它打印出的元素数量6时,*是否将他的孩子的孩子视为自己的孩子?
如果div
您问题中的HTML片段中的位于
//div[2]/div/div[2]/div[2]/div[2]
那么input
子元素将在这里:
//div[2]/div/div[2]/div[2]/div[2]/input
所有的子元素都在这里:
//div[2]/div/div[2]/div[2]/div[2]/*
更新:
编辑1:我确实使用了*,并且可以正常工作,但是当我计算它打印出的元素数量6时,*是否将他的孩子的孩子视为自己的孩子?
不,div/*
仅选择parent的直接子元素div
。
如果您对子级数量超出预期感到惊讶,则可能是基础XPath选择了多个元素,然后您选择的对象不只是目标div
元素。
更新2:
如果您无法发布MCVE,但仍然对返回的孩子数感到困惑,
//div[2]/div/div[2]/div[2]/div[2]/*
尝试在您作为基础提供的XPath上挑战自己:
//div[2]/div/div[2]/div[2]/div[2]/
第一次尝试
//div[2]
它是否真的div
如您所愿地选择了单曲?
然后尝试
//div[2]/div
再一次,看看这是否真的选择了div
您期望的单曲。
以这种方式继续,直到到达所选元素的实际情况偏离您的期望的地方。那里的答案很明显,或者您有更具体的问题要问。
在没有看到您的XML / HTML的情况下,这与建议所获得的效果差不多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句