无法从字符串比较失败的字符串中删除"—"



我正在selenium自动化中执行字符串比较。对于一个字段,我从UI获得这个值:

实际价值:机构投资者&Consultants - Canada

和相同的值,我在我的测试中存储为字符串期望值。

期望值:机构投资者&Consultants - Canada

当我执行,测试asserequal方法到this,这是失败的错误信息:

Actual Result : Institutional Investors & Consultants — Canada 
Expected Result : Institutional Investors & Consultants — Canada

我尝试用:

删除这些特殊字符
replaceAll("â€", "-")

但是同样的消息失败了。

尝试在string的构造函数中设置编码:

subject = new String(subject.getBytes("UTF-8"), "UTF-8");

我有apache common lang3和jsoup。如果有人知道任何好的方法来解决这个问题,请告诉我,因为首先我想避免使用正则表达式并使用标准库。

代码:

if(loc contains ("Canada")) {
Assert.assertEquals("somelocator.getText().trim()", "ExpectedValue");
}

而且,简单的println打印为:

机构投资者&加拿大机构投资者咨询公司;加拿大咨询公司

当我在不同的控制台上打印它时,它打印得很好。

您的第二个代码片段可能失败了,因为您似乎忘记在repaceAll调用中包含"符号:这里您可以看到有不同的可能性:

replaceAll('—', '—') 
replaceAll('–', '–')
replaceAll('•', '-')

不同长度的连字符有不同的编码,因此不会作为相同的比较。

在IDE (Intelij)中修复了这个问题->

  1. ctrl+alt+s (Setting) ->编辑→文件编码->将文件编码更改为UTF-8。默认设置为windows-1252

需要对每个文件进行修改。

  1. 同样的问题也出现在Jenkin (windows)机器上。它被修复了:在这个答案中提到的3个地方添加编码在pom.xml文件中。

最新更新