【发布时间】:2014-12-23 09:28:34
【问题描述】:
这是我正在搜索的一个简化的 HTML 结构:
<div class="main">
...other stuff...
<td class="child">44</td>
<td class="child">59</td>
<td class="child">11</td>
</div>
<div class="main">
...other stuff...
<td class="child">5</td>
<td class="child">14</td>
<td class="child">98</td>
</div>
...this kind of structure repeats with similar numbers a few more times but with identical class names
我需要提取第一个找到的主类下的所有数字,因此我进行了查询以搜索第一个主类,以及它下具有特定类的所有 td。有人可以给我一个提示我做错了什么,因为这个查询给了我所有“主”div中所有td类“child”的所有数字:
List<WebElement> koefi = driver.findElements(By.xpath("//div[@class='main'][1]//td[@class='child']"));
我做错了什么或者我的逻辑是正确的,但是由于结构过于繁琐,我没有在此处粘贴 html 的其他部分......?
谢谢!!
附言: 我也试过了,但又一次,我得到了所有带有“child”类的 td 的内容,而不仅仅是第一个“main”..
List<WebElement> koefi = driver.findElements(By.xpath("//*[1][@class='main']//td[@class='child']"));
更新: 我设法解决了我的问题,首先让 .findElement 函数默认找到的“主” div 的第一次出现:
WebElement element = driver.findElement(By.xpath("//*[1][@id='main']"));
然后用 .findElements 函数提取“子”类:
List<WebElement> kk = element.findElements(By.className("child"));
我仍然无法弄清楚为什么我的 xpath 中的 .findElements 不能工作,或者它工作得太好了,它提取了每个“主”类,而不仅仅是第一个。而且原版的HTML太大了,这里贴不出来,不想打扰你们!!
【问题讨论】:
-
你有什么错误吗?你能试试:java.util.List
koefi = driver.findElements(By.xpath("//div[@class='main'][1]//td[@class='child']" )); -
您确定所有
<div class="main">都是兄弟姐妹吗? -
@Helping:我得到了所有“子”元素的列表,我的目标是仅在第一个“主”下获取“子”元素。我在我文件的顶部..
-
@Maroun:“主”容器上方有一个底层结构,但是,是的,它们都在同一级别,例如 div1>div2>div3>main,然后是 div1>div2> div3>main 等等..
-
原始问题
//div[@class='main'][1]//td[@class='child']中的 xpath 包含一个相对路径,适用于所有主类。