如何获取<li>标签内表格中精确匹配文本元素的XPath?
精确定位完全匹配的搜索结果
别用
contains(),它是包含匹配逻辑,会把带目标文本片段的结果都捞出来(比如1234里包含234,自然会被命中)。要实现完全匹配,直接用节点文本严格相等的判断,同时注意处理DOM里可能存在的多余空格:- 如果目标文本在节点内无多余空格:
//ul/li/table[text()='0234'] - 怕有空格干扰,用
normalize-space()清除首尾空格和中间的多余空格://ul/li/table[normalize-space(text())='0234'] - 要是目标内容在表格的具体子节点(比如
<td>)里,精准定位父级表格://ul/li/table//td[text()='0234']/ancestor::table - 若页面渲染的是数值类型(DOM里存的是数字而非字符串),强制转字符串匹配:
//ul/li/table[string(.)='0234']
- 如果目标文本在节点内无多余空格:
你之前写法无效的原因:
contains(.,'0234'):逻辑就是包含匹配,不符合完全匹配的需求contains(text()='0234'):语法错误,contains()的正确格式是contains(目标节点, 匹配文本),不能把判断表达式作为参数
内容的提问来源于stack exchange,提问作者Uwaise
相关产品推荐
相关产品推荐

