带有法语特殊字符 (è d') 的无效 XPath

Posted

技术标签:

【中文标题】带有法语特殊字符 (è d\') 的无效 XPath【英文标题】:Invalid XPath with French special characters (è d')带有法语特殊字符 (è d') 的无效 XPath 【发布时间】:2020-10-01 19:26:55 【问题描述】:

如果 XPath 包含法语特殊字符(è d'),似乎 XPath 不起作用,出现以下错误

InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression 
//*[@class='v-menubar-menuitem']/*[contains(text(), 'Afficher la bibliothèque d'autorisations')] 
because of the following error:

SyntaxError: Failed to execute 'evaluate' on 'Document': 
The string '//*[@class='v-menubar-menuitem']/*[contains(text(), 'Afficher la bibliothèque d'autorisations')]' is not a valid XPath expression.

运行 windows 机器,也为 File 更改了 EOL(UTF-8,基于 unix),但不工作。

当我们以英文本地化运行时,这很好用

【问题讨论】:

【参考方案1】:

在 XPath 中使用 è 字符没有任何问题。

另一方面,d' 不是单个字符,而是 d 后跟单引号 ',并且单引号会干扰在您的字符串中用作字符串分隔符的单引号XPath。

如果您将字符串分隔符更改为使用双引号,则内部单引号不会有问题:

//*[@class='v-menubar-menuitem']
 /*[contains(text(), "Afficher la bibliothèque d'autorisations")]

【讨论】:

以上是关于带有法语特殊字符 (è d') 的无效 XPath的主要内容,如果未能解决你的问题,请参考以下文章

具有重写规则的法语字符

怎样在 LaTeX 中输入特殊的法文字母?

将单词与特殊字符(é、è、...)进行比较时忽略变音符号

使用 PDO 插入带有特殊字符的值

如何允许用户在 UITextField 中输入法文字符? [关闭]

MySQL phpMyAdmin 无效的 utf8mb4 字符串