2011-10-20 19 views
6

Bunun için çalışan bir uygulama arıyorum. Ben ile geldim en iyisi:Selenium 2.0 Web Sürücüsü: isTextPresent uygulamasının uygulanması

public boolean isTextPresent(String string) { 

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

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

     } 
     return false; 
    } 
+1

metin ararken Daha açık olamaz? Bu, DOM'ın tamamında potansiyel olarak yürürken yavaş olacaktır. IE en kötüsü olacak. Eğer aramayı en azından biraz daraltmak daha iyi olurdu ... – Mikezx6r

+1

Doğal olarak siz haklısınız. Ben Jenkins'i kullanarak koşuyorum, bu yüzden gerçekten zaman bir sorun değil. –

cevap

5

daha hızlı yolu böyle bir şey olurdu yapmak:

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

O C# ama o aynı kavram. Gövde etiketinin metnini almak, tüm iç içe geçmiş öğelerin metnini otomatik olarak döndürür. Emin olmadığım tek şey gizli öğeler içerip içermediğidir.

+0

Güzel görünüyor. Bu da görünmez metinleri yakalar mı? Örneğin. JavaScript? –

+0

Hayır, bu, ekranda görünen metni, yani öğelerin iç metnini döndürür. Örneğin:

Bu metin

. – prestomanifesto

+0

Mükemmel - teşekkürler! –

0

WebDriver Java kullanarak aşağıdaki kod isTextPresent olarak iyi çalışması gerekir:

assertTrue(driver.getPageSource().contains("Welcome Ripon")); 
assertTrue(driver.findElement(By.id("widget_205_after_login")).getText().matches("^[\\s\\S]*Welcome ripon[\\s\\S]*$")); 
İlgili konular