我怎么知道父级下硒的节点位置
本文关键字:节点 位置 我怎么知道 | 更新日期: 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。
我想过一种可能复杂而缓慢的算法。基本上是这样的:
- 获取当前下的 html 代码
- 获取当前节点的父节点
- 迭代(同时计数(得到一个父代码,并将每个子内部代码与我找到的代码进行比较。
- 我需要考虑的其他一些验证
- 当我找到它时,那是列
该算法存在一些问题,例如"如果有 2 个具有相同内部代码的元素怎么办",正如我提到的,这可能会很慢,并且在我开始考虑 Row 和 colum 跨度时不会让我开始(目前我只需要当前行中的位置(。
那么有更简单的方法可以做到这一点吗?一些我不知道的硒功能,或者也许是通过XPath获得它的方法?
谢谢:)
玩了一下 XPath,我想出了以下查询;
//tr[2]/td[position()=count(//tr[1]/td[.='42']/preceding-sibling::*) + 1]
这将为您提供第二个"TR"的相对位置"TD",从第一个"TR"的"TD"中找到的文本选择中。
这是基于使用 xpath 查找节点的位置