比较硒中的两个字符串

时间:2011-04-13 03:59:18

标签: java selenium

我需要从页面的行中获取值

我的代码是

String bname1 = selenium.getText("//table[@id='bank']/tbody/tr[3]/td[2]");
assertEquals(bname1,"HDFC");
if(bname1=="HDFC") {
    System.out.println("Bank name is:"+bname1);
} else {
    System.out.println("Bank name not found");
}
System.out.println(bname1);

结果: 找不到银行名称 HDFC

我的银行名称是“VIJAYA” 但是当我比较“bname1”和“VIJAYA”时,结果会是否定的? 我怎么能比较这些字符串 请帮助我...

4 个答案:

答案 0 :(得分:7)

您无法使用==比较Java中的字符串。所有这一切都是测试两个对象在内存中是否具有相同的地址/是同一个实例。请改用.equals(),例如:

if(bname1.equals("HDFC"))

...或者最好:

if("HDFC".equals(bname1))

哪个更好,因为如果'bname1'是null,它不会崩溃。

答案 1 :(得分:0)

您的原始代码也有其他一些问题。当您调用assertEquals()时,它告诉编译器检查这两个值是否相等,然后在条件不为真时停止执行代码。因此,如果断言失败,则在assertEquals()语句之后找到的print语句将不会被执行。相反,你应该尝试做类似以下的事情。

String bname1 = selenium.getText("//table[@id='bank']/tbody/tr[3]/td[2]");
assertEquals("Bank name - "+bname1+" should be HDFC",bname1,"HDFC");

如果你这样编写你的语句,那么assertEquals函数的第一个参数将成为断言失败时显示的错误信息。

答案 2 :(得分:0)

试试这个..

        WebDriver driver = new FirefoxDriver();
        driver.navigate().to("Url");

        WebElement strvalue = driver.findElement(By.xpath("  "));
        String expected = "Text to compare";
        String actual = strvalue.getText();
        System.out.println(actual);

    if(expected.equals(actual)){
        System.out.println("Pass");
    }
        else {
            System.out.println("Fail");
        }

答案 3 :(得分:0)

您可以简单地使用以下断言:

Assert.assertEquals(ExpectedString, ActualString);

这里 ExpectedString 是预期的字符串,ActualString 是原始字符串值。