我遇到了一个问题,这可能是一个理解上的问题,而不是一个问题,但是我想看看是否有人可以给我一些提示或暗示我做错了什么。
我有5个td
元素。如下。
<td class="someTDClass1">
<span class="aSPANClass">
<div class="theDivClass">
</div>
</span>
</td>
<td class="someTDClass2">
<span class="aSPANClass">
<div class="theDivClass">
</div>
</span>
</td>
<td class="someTDClass1">
<span class="aSPANClass">
<div class="theDivClass">
</div>
</span>
</td>
<td class="someTDClass3">
<span class="aSPANClass">
<div class="theDivClass">
</div>
</span>
</td>
<td class="someTDClass2">
<span class="aSPANClass">
<div class="theDivClass">
</div>
</span>
</td>
现在我要做的是从每个元素的第一个td
中获取类。 td
类更改。但是span和div却没有。所以我写了一个前面的xpath,它在大多数情况下都起作用,但是它没有抓住最后一个元素。所以我只得到4个td
元素。我知道,要使用GetAttribute()
来获取类名,我现在就定位。有人知道为什么吗?为什么找不到最后一个元素?它具有所有相同的元素。
(//span/div[@class='theDivClass']/preceding::td)
答案 0 :(得分:3)
您的XPath仅选择4个td
元素而不是5个元素的原因是preceding::
轴不包含任何祖先,因此您的最后一个td
没有为其选择的div
作为前一个元素存在。
更改
//span/div[@class='theDivClass']/preceding::td
到
//div[@class='theDivClass']/ancestor::td
,您将按预期选择所有5个td
元素。