【问题标题】:xpath nearest element to a given elementxpath 离给定元素最近的元素
【发布时间】:2023-03-28 17:38:01
【问题描述】:

我无法使用 xpath 返回元素。 我需要从一个大表中获取第二个 TD 的文本。

<tr> 
 <td> 
  <label for="PropertyA">Some text here </label>
 </td>
 <td> TEXT!! </td>
</tr>

我能够找到标签元素,但在选择同级 TD 以返回文本时遇到问题。

这就是我选择标签的方式:

"//label[@for='PropertyA']"

谢谢

【问题讨论】:

    标签: xpath selenium


    【解决方案1】:

    您正在寻找坐标区following-sibling。它在同一个父母的兄弟姐妹中搜索 - 它是tr。如果tds 不在同一个tr 中,则找不到它们。如果你愿意,那么你可以使用轴following

    //td[label[@for='PropertyA']]/following-sibling::td[1]
    

    【讨论】:

    • +1 用于使用following-sibling 而不是following。前者是一种更稳健的方法 - 出错的可能性较小,例如如果没有following-sibling::td 它不会选择错误的td。
    【解决方案2】:

    label元素,应该是:

    //label[@for='PropertyA']/following::td[1]
    

    然后使用宿主语言中的DOM方法获取字符串值。

    或者选择文本节点(我不推荐):

    //label[@for='PropertyA']/following::td[1]/text()
    

    或者如果只有这一个节点,那么您可以使用string() 函数:

    string(//label[@for='PropertyA']/following::td[1])
    

    你也可以选择共同祖先trlike:

    //tr[td/label/@for='PropertyA']/td[2]
    

    【讨论】:

      【解决方案3】:

      获取任何以下元素:

      //td[label[@for='PropertyA']]/following-sibling::*

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        相关资源
        最近更新 更多