无法使用webdriver中的contains()测试特殊字符

时间:2013-01-03 11:03:38

标签: java automation webdriver selenium-webdriver assertion

我想验证页面上是否存在特定文本。

我使用了以下代码:

driver.getPageSource().contains("String to check");

以上代码仅适用于没有任何特殊字符的字符串。如果字符串有任何特殊字符("",|,!,&等),则会失败。

有没有办法检查页面上的特定文字?

我正在使用“Selenium独立服务器 - 2.20.0”

以下是我的WebDriver Java代码:

public class test{
    public static void main(String a[])
    textCheck(driver, "welcome, Mani | LogOut");
    static void textCheck(WebDriver driver, String strToCheck){
    boolean blCond = driver.getPageSource().contains(strToCheck);
    if(blCond ){
        System.Out.Println("True");
    }else{
        System.Out.Println("False");
    }
}

现在我想检查加载页面中是否存在字符串"welcome, Mani | LogOut"

3 个答案:

答案 0 :(得分:0)

我会根据你的问题和评论撰写答案。你用

boolean blCond = driver.getPageSource().contains(strToCheck);

在尝试确定您的网页上是否有strToCheck时。在您的情况下,strToCheck"welcome, Mani | LogOut"。您在页面源上使用contains()方法。在稍后的评论中,您说(页面来源的相关部分)是

"<div class=\"login-message\">welcome, <a href=\"/my-account\" class=\"user-name\">suganya</a> | <a href=\"/logout\" class=\"logout\">Logout</a> </div>"

看那个字符串。它不包含字符序列"welcome, Mani | LogOut"

匹配您要查找的内容的最长子字符串将是

"welcome, <a href=\"/my-account\" class=\"user-name\">suganya</a> | <a href=\"logout"

希望这有助于您理解为什么您的代码无法正常工作。

答案 1 :(得分:0)

protected boolean isTextPresent(String text){
    try{
        boolean b = driver.getPageSource().contains(text);
        return b;
    }
    catch(Exception e){
        return false;
    }
  }

通过调用上述方法进行断言:

assertTrue(isTextPresent("welcome, Mani | LogOut"));

答案 2 :(得分:0)

以下是最好的,我认为:

private StringBuffer verificationErrors = new StringBuffer();
try {
      assertTrue(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*welcome, Mani | LogOut[\\s\\S]*$"));
    } catch (Error e) {
      verificationErrors.append(e.toString());
    }
  }