我想弄清楚如何知道当前节点在其父节点下的位置,目前我使用的是 selenium,大部分时间我使用 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 的列。所以用 Selenium 我很容易得到42。但我需要它的位置 td。
我考虑过一个可能复杂而缓慢的算法。基本上是这样的:
- 获取current下的html代码
- 获取当前节点的父节点
- 迭代(在计数时)得到父级并将每个子级内部代码与我找到的内部代码进行比较。
- 我需要考虑的一些其他验证
- 当我找到它时,它就是柱子
该算法有一些问题,例如“如果有 2 个元素具有相同的内部代码怎么办”,正如我提到的那样,它可能很慢并且在我开始考虑 Row 和 colum 跨度时不让我开始(目前我只是需要当前行中的位置)。
所以有更简单的方法吗?一些我不知道的 selenium 函数或者可能是通过 XPath 获取它的方法?
谢谢 :)
最佳答案
在尝试使用 XPath 后,我想到了以下查询;
//tr[2]/td[position()=count(//tr[1]/td[.='42']/preceding-sibling::*) + 1]
这将从第一个“TR”的“TD”中找到的文本选择中为您提供第二个“TR”的相对定位的“TD”。
关于c# - 我如何知道 Selenium 在父节点下的节点位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229737/