断言-2个完全相同的字符串比较返回错误

fab*_*bik 5 java string selenium gettext

我正在使用此代码比较两个字符串:

    Assert.assertTrue(driver.findElement(By.cssSelector(cssSelector)).getText().equals(text));
Run Code Online (Sandbox Code Playgroud)

两个String输出在输出中完全相同:

    Merci ! Votre commande a été envoyée.
    Merci ! Votre commande a été envoyée.
Run Code Online (Sandbox Code Playgroud)

测试确实运行了很多次,并且一直有效直到出现这种情况。字符串内没有空格。特殊字符在任何其他情况下都不会引起问题。

有什么想法吗?谢谢!

更新:

比较这些字符串时出现相同的错误,也许有一些共同之处破坏了测试:

Merci ! Votre commande a été envoyée.
Merci ! Votre commande a été envoyée.

Référence de la commande : {0}
Référence de la commande : {0}

Contactez-moi !
Contactez-moi !

Quelle est la probabilité que vous recommandiez nous à un ami ou un collègue ?
Quelle est la probabilité que vous recommandiez nous à un ami ou un collègue ?
Run Code Online (Sandbox Code Playgroud)

我注意到在每种情况下(_!/ _?/ _ :)的符号前都有一个空格。这个(符号前的空格)永远不会在其他传递的断言中发生。我正在测试其中的500个。可能是原因吗?

Joo*_*gen 4

我的猜测是,文本周围的空白在 getText 处被修剪或添加。

\n\n
Assert.assertTrue(driver.findElement(By.cssSelector(cssSelector)).getText().equals(text));\n
Run Code Online (Sandbox Code Playgroud)\n\n

可能忽略这个差异:

\n\n
Assert.assertTrue(driver.findElement(By.cssSelector(cssSelector)).getText().trim()\n    .equals(text.trim()));\n
Run Code Online (Sandbox Code Playgroud)\n\n

Unicode 的另一个属性是\xc3\xa9可以是一个字符或两个字符(e + 重音符号)。而java内部对文本使用Unicode。实际上,在比较之前应该对文本进行标准化

\n\n
s = Normalizer.normalize(s, Normalizer.Form.NFKC); // Most compact\n
Run Code Online (Sandbox Code Playgroud)\n\n

顺便说一下,而不是使用预期值和实际值的assertTrue方法assertEquals会给出更好的错误消息。

\n