未知属性时XPath属性子串搜索及SVG无属性文本匹配方案
解决SVG元素文本内容匹配问题
你之前用contains(., 'Front')没成功,核心原因是SVG元素本身没有直接包含文本内容——这些文本通常嵌套在<text>、<tspan>这类子元素里,直接用.匹配当前元素的文本自然找不到。
给你两个可行的XPath方案:
方案1:匹配同时包含两个关键词的SVG(关键词可在不同文本节点)
这个方案适用于"NCS-4202"和"Front"分别在SVG下不同文本子元素的情况:
//*[name()='svg' and contains(@data-type,'CHASSIS') and .//text()[contains(., 'NCS-4202')] and .//text()[contains(., 'Front')]]
.//text():遍历当前SVG下所有层级的文本子节点- 分别检查是否存在包含两个关键词的文本节点,只要都存在就匹配目标SVG
方案2:匹配同一文本节点包含两个关键词的SVG
如果两个关键词肯定出现在同一个文本节点里,可以用这个更精准的写法:
//*[name()='svg' and contains(@data-type,'CHASSIS') and .//text()[contains(., 'NCS-4202') and contains(., 'Front')]]
内容的提问来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

