我想验证页面上是否存在特定文本。
我使用了以下代码:
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"
。
答案 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());
}
}