【发布时间】: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