【发布时间】:2016-01-10 02:24:00
【问题描述】:
我的 HTML 页面中有下表。
<div id="mDisplayCiteList_ctl00_mCiteListSpacingDiv">
<table>
<tr>
<td class="ResultListTableHeader"> </td>
<td> </td>
</tr>
</table>
<table>
<tr>
<td colspan="3"> </td>
<td> </td>
</tr>
</table>
<table>
<tr>
<td><span class="x">Content</span></td>
<td><span class="x">Content1</span></td>
</tr>
</table>
<table>
<tr>
<td><span class="x">Content</span></td>
<td><span class="x">Content1</span></td>
</tr>
</table>
</div>
我正在尝试将 td 元素放入具有以下条件的列表中。
tr 的第一个 td 不应具有 colspan 或类名 ResultListTableHeader。
我尝试了以下 XPATH。
List<WebElement> multiBases = chromeDriver.findElements(By.xpath(
".//*[@id='mDisplayCiteList_ctl00_mCiteListSpacingDiv']/descendant::table/descendant::tr[not(td[1]/@class='ResultListTableHeader' and td[1]/@colspan)]/td[4]/span"));
for (int i = 0; i < multiBases.size(); i++) {
System.out.println(multiBases.get(i).getText());
}
这并没有做任何事情,甚至没有抛出任何异常。
我也试过用or替换and,但还是没用。
预期输出
这里我想获取 content1(第三行第二列)和 content1(第四行第二列),因为这些行的第一列(td)没有类名作为 ResultListTableHeader 或 colspan
请告诉我如何解决这个问题。另外,如果有其他更好的方法可以做到这一点,请告诉我。
谢谢
【问题讨论】:
-
对于提供的示例,您想要的输出是什么?
-
嗨@alecxe,我稍微修改了我的HTML以显示差异,这里我想获取content1(第三行第二列)和content1(第二列),因为第一列(td) 这些行的类名没有 ResultListTableHeader 或 colspan
-
请更新 HTML 示例,以便我们可以看到将如何使用类 'ResultListTableHeader'。
-
很抱歉错过了@DmytroPastovenskyi,感谢您指出这一点,我已经更新了问题。
-
您能添加一个您希望从该 HTML 收到的结果吗?只有最后 2 个表中的 td 元素,对吧?
标签: selenium xpath selenium-webdriver selenium-chromedriver