【问题标题】:equalsIgnorecase is faling even though both actual & expected strings are same即使实际字符串和预期字符串相同,equalsIgnorecase 也会失败
【发布时间】:2016-12-22 18:23:41
【问题描述】:

我在比较两个字符串时遇到问题。两个字符串都相同,但条件仍然失败。下面是我得到的代码和错误的屏幕截图。

下面是代码,

  public void validatePageHeader(String strExpectedPageHeader) {
    try {
        Thread.sleep(2000);
        String strActualPageHeader = weHomePageHeader.getText();
        System.out.println("strExpectedPageHeader :"+strExpectedPageHeader);
        System.out.println("strActualPageHeader :"+strActualPageHeader);

        if(weHomePageHeader.getText().equalsIgnoreCase(strExpectedPageHeader)){
            System.out.println("Matched");
        }
        else{
            System.out.println("Not Matched");
        }
        Assert.assertEquals(strActualPageHeader, strExpectedPageHeader );
    } catch (Exception e) {
        System.out.println("Exception in validating page header "+ e.getMessage());
        e.printStackTrace();
    }
}

以下是控制台中显示的错误。

[TestNG] Running:
  C:\Users\Sanju\AppData\Local\Temp\testng-eclipse-1613164258\testng-   customsuite.xml

strExpectedPageHeader :Guru99 Bank
strActualPageHeader :Guru99 Bank
Not Matched
[Utils] Attempting to create F:\SeleniumPractice\Guru99Bank\test-  output\Default suite\Default test.xml
[Utils]   Directory F:\SeleniumPractice\Guru99Bank\test-output\Default suite   exists: true
PASSED: launchApp
FAILED: testLoginPageHeader("Guru99 Bank Home Page", "Guru99 Bank",  "mngr56592", "umYzehE")
java.lang.AssertionError: expected [Guru99 Bank] but found [Guru99 Bank]
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.failNotEquals(Assert.java:513)
at org.testng.Assert.assertEqualsImpl(Assert.java:135)
at org.testng.Assert.assertEquals(Assert.java:116)
at org.testng.Assert.assertEquals(Assert.java:190)
at org.testng.Assert.assertEquals(Assert.java:200)
at com.pageobjects.LoginPage.validatePageHeader(LoginPage.java:63)
at com.driver.Login.testLoginPageHeader(Login.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:646)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1137)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:753)
at org.testng.TestRunner.run(TestRunner.java:607)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:368)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:363)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:321)
at org.testng.SuiteRunner.run(SuiteRunner.java:270)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1284)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1209)
at org.testng.TestNG.runSuites(TestNG.java:1124)
at org.testng.TestNG.run(TestNG.java:1096)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)


===============================================
    Default test
    Tests run: 2, Failures: 1, Skips: 0
===============================================

【问题讨论】:

  • 也许有一个不间断的空格而不是普通的空格,甚至可能是不可见的(控制)字符。你能以十六进制格式显示字符串吗?
  • 我猜这可能是一些编码问题。你的浏览器编码是什么,你的源代码编码是什么?
  • 请始终将您的代码显示为文本 - 我们不希望在此处将代码添加为图像,因为它无法复制和粘贴。你会修改吗?
  • 您能否将两者转换为字符数组并打印出来? (在做 Arrays.toString 之后)。可能有些字符看起来相同/不可见
  • @Ivan 仍然无法正常工作。下面是我的更改 char[] charExpectedArray = strExpectedPageHeader.toCharArray(); for(int i = 0;i

标签: java selenium


【解决方案1】:

您可以尝试使用 .trim 功能,它会起作用或将 HTML 片段发送到您正在测试的地方。你可以试试:

String strActualPageHeader = weHomePageHeader.getText().trim();
        System.out.println("strExpectedPageHeader :"+strExpectedPageHeader);
        System.out.println("strActualPageHeader :"+strActualPageHeader);
        if(weHomePageHeader.getText().trim().equalsIgnoreCase(strExpectedPageHeader)){
            System.out.println("Matched");
        }
        else{
            System.out.println("Not Matched");
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-19
    • 2017-09-26
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多