根据另一个的位置选择一个xpath元素

时间:2016-04-14 11:08:23

标签: xpath

我想根据另一个使用xpath的位置选择一个html元素。例如:

<table>
    <tr>
        <th>
            Col1
        </th>
        <th>
            Col2
        </th>
        <th>
            Col3
        </th>
        <th>
            Col4
        </th>
    </tr>
    <tr>
        <td>
            Value1
        </td>
        <td>
            Value2
        </td>
        <td>
            Value3
        </td>
        <td>
            Value4
        </td>
    </tr>
</table>

在这个例子中,我希望td集合中的td位于与内容Col2相同的位置。

我可以找到第

的位置
//th[contains(.,'Col2')]

我想避免这样做

//td[2]

我有什么方法可以将这两者联系起来吗?

1 个答案:

答案 0 :(得分:4)

这是一种可能的方式:

//td[
    position() = count(//th[contains(.,'Col2')]/preceding-sibling::th)+1
 ]

<强> xpathtester demo

XPath返回td位置等于th位置。 {em}位置th 是通过计算前一个兄弟th的数量来计算的,+1,因为XPath位置索引从1开始。