-3

特定のテキストがページに存在するかどうかを確認したいと思います。

次のコードを使用しました。

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

上記のコードは、特殊文字を含まない文字列に対してのみ機能します。前述のように文字列に特殊文字("",|,!,&など)が含まれている場合、失敗します。

ページ上の特定のテキストを確認する方法はありますか?

「Seleniumスタンドアロンサーバー-2.20.0」を使用しています

以下は私のWebDriverJavaコードです。

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

あなたの質問とコメントに基づいて回答を作成します。あなたが使う

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 に答える
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 に答える