Java 选择不同层次的元素

Java 选择不同层次的元素,java,selenium,xpath,windows-7,Java,Selenium,Xpath,Windows 7,以前,我们有一个在div级别具有列名的表,因此: &NBSP 姓 名字 年龄 还有更深的路径。您没有将th与span组合,如下所示: th[div[span[text()]]] 这个怎么样: th[div[.//text()[normalize-space()]]] 上面的XPath将匹配包含div元素的th,其中div包含非空文本节点(文本节点在span或任何其他元素内或直接在div内并不重要),您可以使用下面的代码打印文本 List<WebElement> element

以前,我们有一个在div级别具有列名的表,因此:


&NBSP
姓
名字
年龄

还有更深的路径。您没有将
th
span
组合,如下所示:

th[div[span[text()]]]
这个怎么样:

th[div[.//text()[normalize-space()]]]

上面的XPath将匹配包含
div
元素的
th
,其中
div
包含非空文本节点(文本节点在
span
或任何其他元素内或直接在
div
内并不重要),您可以使用下面的代码打印文本

List<WebElement> elements = driver.findElements(By.cssSelector("#someTablsID > tr > th > div"));
for (WebElement element : elements)
{
    System.out.println(element.getText().trim());
}
List elements=driver.findElements(By.cssSelector(“#sometablesid>tr>th>div”);
for(WebElement:elements)
{
System.out.println(element.getText().trim());
}
我发现CSS选择器更容易自己使用。。。YMMV

CSS选择器
#sometablesid>TR>TH>DIV
将被读取:查找具有ID(#)的元素
sometablesid
,该元素具有子(>)
TR
,该子(>)
TH
具有子(>)
DIV
。从那里你可以抓取文本,无论它是否在子
SPAN
中,你都可以得到它