当前位置: 首页 > 知识库问答 >
问题:

XPath指向表中特定元素旁边的元素

雷方伟
2023-03-14

我有如下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(前一个兄弟)+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]

有更简单的方法吗?问题是表的结构可能会随着时间的变化而变化,但是所需的值总是紧挨着唯一的

共有1个答案

翟嘉年
2023-03-14

不使用prefored-sibling,而是使用following-sibling:

//td[text()="unique value 2"]/following-sibling::td[1]
 类似资料:
  • 问题内容: 我正在使用Selenium将Web测试添加到我的项目中。我已经有很多使用以下方法检查特定元素的测试: 这很好。现在,我还有另一个要求。这是在我生成的页面中: 如何掌握错误消息?我想要一些允许我在dateElement之后请求带有“错误”类的span元素的东西。 (此错误消息是由Spring MVC合并的,因此直接更改它并不容易。我想可能是这样,但我不希望这样做)。 任何其他想法都欢迎。

  • 我在选择要在Selenium中读取的表时遇到了一个问题。 我有一个表,其中的'thead'中有两个'tr'元素,我需要找到一种方法来忽略其中的第一个元素。 以下是代码: 使用Selenium,我将要求它记录某一行和某列的值。然后查看我将给出的Table元素(希望使用在本例中可以使用的XPath),查看head,并记录每个列的header。在这种情况下,我正在努力,在这个表的顶部有一个额外的'tr'

  • 我试图找到正确的xpath表达式来选择包含特定文本的元素的父元素。 在下面的示例中,我希望选择文本匹配为“4”或任何其他数字的“span”元素,并且父元素与文本“Rooms”匹配: 我的XPath示例-匹配“div”元素中的每个“span” 源代码 我想要的是选择包含数字4的“span”元素作为文本,但html可能会更改,可能只有两个或一个“span”元素,如下例所示: 或

  • 问题内容: 我想知道是否有可能为python列表中的元素获取“指针”。这样,我将能够直接访问我的元素而无需知道我元素的索引。我的意思是,您可以在列表中的任何位置添加元素。在开始,中间甚至结束时,各个元素都不会从其实际存储位置移出。从理论上讲,应该可以执行以下操作: [1] 元素将在此处充当指针。 [0,1,2] 此时,即使列表中的索引已更改,我仍然可以直接访问该元素。 我要这样做的原因是,在我的程

  • 问题内容: 我有具有特定名称的元素的NodeList,我想拥有所有theese节点的XPath。 我找不到方法。 我正在寻找类似GET_XPATH()的方法 有人知道该怎么做吗?甚至有可能吗? 如果可能,XSLT也可以使用它,但是如果有人知道Java中的这种可能性,则最好使用它。 原因:我需要一组指向XML库的指针。指向定义元素的指针。 输入示例: 输出: 问题答案: 以下样式表: XSLT 1.

  • 我能够在等式(1)中一个接一个地获得所有细节。 在示例中: 在HTML表格中,当我做等式(0)时,我得到GK,NS,PS。当我做等式(1)时,我得到99 88 55。 有没有一种方法可以让我使用JSOUP作为 现在我得到了两个不同的字符串数组。