我怎么知道父级下硒的节点位置

本文关键字:节点 位置 我怎么知道 | 更新日期: 2023-09-27 18:33:27

我正在尝试弄清楚如何知道当前节点在其父节点下的位置,目前我正在使用硒,大多数时候我使用 Xpath。这是因为我想提取表的所有列在此示例中,列数是动态生成的

<tabe>
    <tr>
        <td>23</td>
        <td>42</td>
        <td>31</td>
    </tr>
    <tr>
        <td>13</td>
        <td>21</td>
        <td>32</td>
    </tr>
</table>

因此,假设我需要第二个列(42 和 21(,但由于内容是动态生成的,我不知道它是否是第二个列,我只知道我想要数字为 42 的列。所以有了硒,我很容易得到42。Bu 我需要它的位置 td。

我想过一种可能复杂而缓慢的算法。基本上是这样的:

  1. 获取当前下的 html 代码
  2. 获取当前节点的父节点
  3. 迭代(同时计数(得到一个父代码,并将每个子内部代码与我找到的代码进行比较。
  4. 我需要考虑的其他一些验证
  5. 当我找到它时,那是列

该算法存在一些问题,例如"如果有 2 个具有相同内部代码的元素怎么办",正如我提到的,这可能会很慢,并且在我开始考虑 Row 和 colum 跨度时不会让我开始(目前我只需要当前行中的位置(。

那么有更简单的方法可以做到这一点吗?一些我不知道的硒功能,或者也许是通过XPath获得它的方法?

谢谢:)

我怎么知道父级下硒的节点位置

玩了一下 XPath,我想出了以下查询;

//tr[2]/td[position()=count(//tr[1]/td[.='42']/preceding-sibling::*) + 1]
这将为您提供第二个"TR"的相对位置"TD",从

第一个"TR"的"TD"中找到的文本选择中。

这是基于使用 xpath 查找节点的位置