-3

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

我使用了以下代码:

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"加载的页面中是否存在字符串。

4

3 回答 3

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"));
于 2013-01-29T12:40:49.703 回答
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());
    }
  }
于 2013-01-29T12:55:08.437 回答
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"

希望这可以帮助您理解为什么您的代码没有按您希望的那样工作。

于 2013-01-08T11:50:59.873 回答