2011-10-20 10 views
6

Estoy buscando una implementación operativa de esto. El mejor que he llegado con es:Selenium 2.0 Web Driver: implementación de 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

No puede ser más específico cuando se busca el texto? Esto va a ser lento ya que potencialmente caminarás todo el DOM. IE será el peor. Sería mucho mejor si al menos pudieras reducir la búsqueda ... – Mikezx6r

+1

Naturalmente estás en lo cierto. Estoy corriendo allí usando Jenkins, así que realmente el tiempo es menos problemático. –

Respuesta

5

Una forma más rápida de hacerlo sería algo como esto:

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

Es en C# pero es el mismo concepto. Al obtener el texto de la etiqueta corporal automáticamente se devuelve el texto de todos los elementos anidados. Lo único de lo que no estoy seguro es si los elementos ocultos están incluidos o no.

+0

Se ve bien. ¿Esto capturaría texto invisible también? P.ej. JavaScript? –

+0

No, esto devolverá el texto visible en la pantalla, es decir, el texto interno de los elementos. Por ejemplo:

Este texto

. – prestomanifesto

+0

Excelente - gracias! –

0

El siguiente código de usar Java en WebDriver debería funcionar bien como isTextPresent:

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