含contains的XPath表达式存在语法错误,已尝试以下版本求协助
排查XPath中
contains()函数的语法错误 别着急,我帮你梳理下contains()函数常见的语法问题,你也可以把你尝试过的具体XPath表达式贴出来,我帮你精准定位问题!
常见错误场景及修正方法
- 参数顺序搞反:
contains()的正确语法是contains(目标字符串, 要查找的子串),很多人会搞反顺序。比如错误写法://div[contains('hello', text())],正确写法应该是//div[contains(text(), 'hello')] - 引号使用错误:要查找的子串必须用单引号或双引号包裹,且要和外层XPath的引号区分开。比如错误写法:
//div[contains(text(), hello)](子串未加引号),或者外层用双引号时内层也用双引号未转义,这时候可以改成//div[contains(text(), 'hello')]来避免冲突 - 未正确获取节点文本:如果目标节点的文本分散在子节点中,直接用
text()可能取不到完整内容,这时候可以用normalize-space(string(.))来获取节点的全部文本,比如//div[contains(normalize-space(string(.)), 'hello')] - 混淆节点类型:如果目标不是字符串类型(比如属性),要明确指定。比如想匹配属性包含某值,错误写法:
//div[contains(@class, active)],正确应该是//div[contains(@class, 'active')]
请把你尝试过的具体XPath表达式贴出来,我帮你仔细分析!
内容的提问来源于stack exchange,提问作者Deepali Patil
相关产品推荐
相关产品推荐

