如何使用XPath选择含引号的文本?双引号文本XPath语法问题
如何用XPath选择包含引号字符的文本?
嗨,这个问题其实是XPath里常见的引号转义坑,我来给你捋清楚!
核心思路:用不同引号分隔字符串
XPath允许用单引号或双引号来包裹字符串字面量,只要你选的包裹引号和目标文本里的引号不一样,就不会触发语法冲突。
针对你的具体场景
你要匹配的页面文本是"my text"(带双引号),之前写的XPath报错,是因为你用双引号包裹整个表达式,里面又嵌套了双引号,导致VS识别时语法直接断裂。
正确的写法有两种:
优先用单引号包裹目标字符串:
//td[contains(., '"my text"')]这里
contains的第二个参数用单引号包裹,里面的双引号属于目标文本的一部分,和外层引号不冲突,VS就能正确识别语法了。如果你的代码环境只能用双引号包裹整个XPath(比如某些框架限制),可以用
concat()拼接://td[contains(., concat('"', 'my text', '"'))]把双引号单独用单引号包裹,再和文本部分拼接,同样能精准匹配目标内容。
进阶场景:文本同时包含单双引号
如果目标文本是'my "text"'这种同时有单双引号的情况,就必须用concat()拆分处理:
//td[contains(., concat("'", 'my "text"', "'"))]
把单引号用双引号包裹,文本部分用单引号包裹,拼接后就能完整匹配带混合引号的内容。
内容的提问来源于stack exchange,提问作者xxx2017
相关产品推荐
相关产品推荐

