javascript - 如何使用 XPath 选择具有特定内部文本的元素的直接兄弟?
问题描述
这是我的示例源 HTML:
<!-- Many other elements above this -->
<div class="emf-div-field">
<span style="width:175px">
<input class="validate[required]" style="width:100%" value="" id="element_2" name="element_2" type="text">
<label for="element_2" class="emf-bottom-label emf-text-center">First</label>
</span>
<span style="width:125px">
<input class="validate[optional]" style="width:100%" value="" id="element_6" name="element_6" type="text">
<label for="element_6" class="emf-bottom-label emf-text-center">Middle</label>
</span>
<span style="width:175px">
<input class="validate[required]" style="width:100%" value="" id="element_3" name="element_3" type="text">
<label for="element_3" class="emf-bottom-label emf-text-center">Last</label>
</span>
</div>
<!-- Many other elements below this -->
我需要XPath 来选择innerText 为“First”的<input>
元素之前的元素。<label>
该<input>
元素始终是该元素的兄弟<label>
。
它需要是基于<label>
innerText 的相对选择,因为通常这些语句可能处于许多不同的级别。
我已经尝试过这个(以及许多其他变体),但没有一个奏效:
//input[preceding-sibling::label[text() = "First"]]
谢谢。
解决方案
不要让它太复杂。只需使用
//span[label='First']/input
但是,如果您确实需要相对于label
元素的路径,请使用
//label[.='First']/preceding-sibling::input[1]
推荐阅读
- php - Prestashop:未捕获的错误:在中找不到类“smartblog”
- c# - 参考交互触发控制
- node.js - Mongoose 错误必须传入有效的 bson 解析器
- apache-spark - 如何解决错误“AttributeError:'SparkSession'对象没有属性'serializer'?
- mysql - 在 VB.net 中打印和存储收据
- javascript - 创建艺术地图并将 html 放置在特定坐标处
- office-js - 自动将加载项权限分配给新用户,Exchange on Premises
- sql - 调查数据的数据转换 - SQL Server
- c - 如何复制 char **a - C 的值
- javascript - Detecte 自动检测 MKV 视频的字幕(videojs 或其他)