2013-01-03 28 views
-3

我想驗證頁面上是否存在特定文本。無法在webdriver中使用contains()測試特殊字符

我用下面的代碼:

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

上面的代碼被用於其不具有任何特殊字符串唯一的工作。如果字符串有任何特殊字符("",|,!,&等),如上所述,它會失敗。

有什麼辦法可以檢查頁面上的特定文本嗎?

我使用「硒獨立服務器 - 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

你說的失敗是什麼意思?當它應該是'true'時返回'false'?例外?編譯器錯誤? – jlordo

+0

如何檢查具有特殊字符的字符串? –

+0

它返回false。如果文本有任何特殊字符。我將該字符串作爲參數傳遞。 – Manigandan

回答

0

我會根據您的問題和意見撰寫答案。您使用

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

試圖確定strToCheck是否在您的網頁上。在你的情況下,strToCheck"welcome, Mani | LogOut"。您在頁面的來源上使用方法。在稍後的評論中,您說頁面源的(相關部分)是

"<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" 

希望這有助於你理解爲什麼你的代碼不能正常工作,你想讓它。

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")); 
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()); 
    } 
    }