2011-10-20 10 views
6

私はこれの実装を探しています。私が思い付くした最高のは、次のとおりです。Selenium 2.0 Webドライバ:isTextPresentの実装

public boolean isTextPresent(String string) { 

     for (WebElement e : drv.findElements(By.cssSelector("*"))) { 

      if (e.isDisplayed() && e.getText().contains(string)) { 
       return true; 
      } 

     } 
     return false; 
    } 
+1

テキストを探しているときには、より具体的なことはできませんか?あなたは潜在的にDOM全体を歩いているので、これは遅くなるでしょう。 IEは最悪になります。あなたが少なくともいくつかの検索を絞ることができればもっと良いでしょう... – Mikezx6r

+1

当然あなたは正しいです。私はジェンキンスを使ってそこを走っているので、本当に時間はあまり問題になりません。 –

答えて

5

それを行うためのより高速な方法は、このようなものになるだろう:

public boolean isTextPresent(string str) 
{ 
    IWebElement bodyElement = driver.FindElement(By.TagName("body")); 
    return bodyElement.Text.contains(str); 
} 

それは、C#でだが、それは同じ概念です。 bodyタグのテキストを取得すると、自動的にすべての入れ子要素のテキストが返されます。隠し要素が含まれているかどうかは、わからない唯一のことです。

+0

よく見えます。これも見えないテキストをキャプチャしますか?例えば。 JavaScript? –

+0

いいえ、これは画面に表示されるテキスト、つまり要素の内部テキストを返します。例:

このテキスト

。 – prestomanifesto

+0

優秀 - ありがとう! –

0

webdriverをでJavaを使用して、次のコードは、isTextPresentとして正常に動作する必要があります:

assertTrue(driver.getPageSource().contains("Welcome Ripon")); 
assertTrue(driver.findElement(By.id("widget_205_after_login")).getText().matches("^[\\s\\S]*Welcome ripon[\\s\\S]*$")); 
関連する問題