我正在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)中修复了这个问题->
- ctrl+alt+s (Setting) ->编辑→文件编码->将文件编码更改为UTF-8。默认设置为windows-1252
需要对每个文件进行修改。
- 同样的问题也出现在Jenkin (windows)机器上。它被修复了:在这个答案中提到的3个地方添加编码在pom.xml文件中。