如何使用XPath查找包含含Unicode文本的网页元素?
解决XPath匹配带方向控制字符文本的问题
问题根源在于:浏览器解析HTML时,会把‪、‬、‏这类实体转换成对应的Unicode控制字符(分别是U+202A左至右嵌入、U+202C弹出方向格式化、U+200F右至左标记),而你用原始实体字符串写的XPath,自然匹配不到解析后的实际文本内容。
给你两种可行的解决方法:
方法一:直接用解析后的Unicode字符匹配
直接把包含控制字符的目标文本写入XPath,比如:
//*[contains(text(), 'Dansk')]
注意:输入时要确保控制字符完整保留,有些编辑器可能自动过滤这类不可见字符,建议直接复制你提供的"Dansk"文本到XPath中。
方法二:过滤控制字符后匹配可见文本
如果担心控制字符输入或保存时丢失,可以通过translate()函数移除这些不可见字符,只匹配可见的"Dansk":
//*[normalize-space(translate(text(), '', '')) = 'Dansk']
这里的translate()会把文本中的U+202A、U+202C、U+200F三个控制字符替换为空,再用normalize-space()处理空格后,匹配纯文本"Dansk"。
内容的提问来源于stack exchange,提问作者Fauna Muirgen
相关产品推荐
相关产品推荐

