2

我有这样的 HTML 结构:

<table>
    <tr>
        <td>some value 1</td>
        <td>unique value 1</td>
        <td>needed value 1</td>
        <td>some value 1</td>
    </tr>


    <tr>
        <td>some value 2</td>
        <td>unique value 2</td>
        <td>needed value 2</td>
        <td>some value 2</td>
    </tr>

    <tr>
        <td>some value 3</td>
        <td>unique value 3</td>
        <td>needed value 3</td>
        <td>some value 3</td>
    </tr>

</table>

我使用 Selenium,需要通过使用 XPath 搜索这个唯一值来指向唯一值旁边的 td。

我找到了解决方案:找到具有所需唯一值的 tr,然后计算 td 的前兄弟并使用 position()=count(preceding-sibling)+2

//tr[./td[text()='Unique value 2']]/td[position()=count(//tr[./td[text()='Unique value 2']]/td[text()='Unique value 2']//preceding-sibling::td)+2]

有没有更简单的方法?问题是表的结构可能会随时间改变,但所需的值总是在唯一的旁边

4

1 回答 1

2

而不是使用preceding-sibling,使用following-sibling

//td[text()="unique value 2"]/following-sibling::td[1]
于 2013-02-21T11:49:42.727 回答