html - xpath 表达式 - 选择父元素包含特定文本的元素

标签 html firefox xpath

我目前正在努力寻找正确的 xpath 表达式来选择其父/同级元素包含特定文本的输入元素。

在下面的示例中,我想选择“input”元素,在同一 tr 行中,存在具有特定文本的 td 元素。

我的示例路径 - 返回不匹配

//input[contains(../../../td/text(),"15-935-331")]

源代码

<tr>
    <td><a href="xxx" target="_blank">xxxx, yyyyy</a></td>
    <td>Mr</td>
    <td></td>
    <td> 15-935-331</td>
    <form id="betreuerModel" action="xxxx" method="POST">
      <td class="tRight">
        <input value="Bearbeiten" id="bearbeiten" name="bearbeiten" class="submit" title="Bearbeiten" type="submit"/>
      </td>
    </form>
</tr>
<tr>
 // .. next row with same structure
</tr>

最佳答案

contains当给定一个节点集时,函数将只在该节点集中的第一个节点上运行。在您的情况下,它是 <td><a href="xxx" target="_blank">xxxx, yyyyy</a></td> . 您可以改为重构您的表达式,以便谓词在所有要检查的节点上运行,并且 contains函数对单个项目进行操作:

//input[../../../td/text()[contains(., "15-935-331")]]

这将得到任何 input元素,其中父级的父级的父级包含 td具有包含文本 15-935-331 的文本节点的元素.


一个可能更简单的指定方法是使用 ancestor::tr[1]/td代替 ../../../td .

//input[ancestor::tr[1]/td/text()[contains(.,"15-935-331")]]

这会得到第一个 tr在祖先层次结构中,并对其进行操作。

关于html - xpath 表达式 - 选择父元素包含特定文本的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40800759/

相关文章:

python - 如何在 Python 中使用 XPath?

jquery - 如何在悬停时显示字体很棒的图标

python - 无法使用 Selenium 安装某些 Firefox 扩展

php - 阻止 FIREFOX 缓存验证码

css - 网站在 Mac 上看起来不一样

java - 从xml中获取具有特定属性值java的所有节点

html - 提交按钮不填满 FF 中列表项的全宽

asp.net - 使用超链接时如何删除图像周围的框?

html - 具有鼠标移出持续时间的 CSS 悬停效果

Java xPath - 从 XML 中提取子文档