【问题标题】:Not able to remove "—" from string which is failing string comparison无法从字符串比较失败的字符串中删除“—”
【发布时间】:2021-10-27 09:34:51
【问题描述】:

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

实际价值:机构投资者和顾问 - 加拿大

同样的值,我已经在我的测试中存储为字符串预期值。

预期价值:机构投资者和顾问 - 加拿大

当我执行时,对此进行测试 assertEqual 方法,这将失败并显示以下错误消息:

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

我尝试删除这些特殊字符:

replaceAll("â€", "-")

但失败并显示相同的消息。

尝试在字符串的构造函数中设置编码:

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

这也没有用。

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

代码:

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

此外,只是简单的 println 打印为:

机构投资者和顾问 - 加拿大机构投资者和顾问 - 加拿大。

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

【问题讨论】:

  • 也许this 会有所帮助
  • 这个试过了,还是不行
  • 也许您使用了不同的连字符? grammar.yourdictionary.com/punctuation/… 。好吧,这只是一个猜测
  • 我复制粘贴了实际值,所以是一样的。
  • 你能发布你的代码吗?

标签: java testng


【解决方案1】:

您的第二个代码 sn-p 可能失败了,因为您似乎忘记在 repaceAll 调用中包含“符号:Here 您看到有不同的可能性:

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

不同长度的连字符具有不同的编码,因此不会相等。

【讨论】:

  • 谢谢。它可能会帮助某人。但是,如果您的文件编码在全局级别设置不同,它将无法正常工作。
  • 是的,你是对的,我只是想我必须提到这一点,因为这种方法是你在试图找出你当前的问题时使用的一种方法
【解决方案2】:

问题已在 IDE (Intelij) 中得到修复->

  1. ctrl+alt+s(设置)-> 编辑器-> 文件编码-> 将文件编码更改为 UTF-8。默认情况下,它设置为 windows-1252

也需要从那里单独更改文件。

  1. 同样的问题也出现在 Jenkins (windows) 机器上。它通过以下方式修复: 在 answer 中提到的 3 个位置的 pom.xml 文件中添加编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 2016-07-05
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多