2011-05-12 106 views

Respuesta

17

El código es la siguiente:

def elem = driver.findElement(By.xpath("//*[contains(.,'search_text')]")); 
if (elem == null) println("The text is not found on the page!"); 
+1

Lo anterior no es técnicamente cierto para el selenio en .Net. Si el elemento no se encuentra arrojará una NoSuchElementException. También tenga en cuenta que el xpath contiene distingue entre mayúsculas y minúsculas –

+0

@Ryan esta diferencia es notable, buen punto – Grooveek

+1

Selenium 2 con WebForms se pone un poco tedioso. Creé algunos métodos de envoltura que lo hacen un poco más fácil. http://www.foliotek.com/devblog/simplifying-c-selenium-2-tests-for-asp-net-webforms/ – Narnian

0

Por alguna razón, no parece que ciertos elementos para responder a la búsqueda "genérico" que aparece en la otra respuesta. Al menos no en Selenium2library bajo el marco del robot que es donde necesitaba este encantamiento para encontrar el elemento en particular:

xpath=//script[contains(@src, 'super-sekret-url.example.com')] 
1

Si su buscar toda la página de algún texto, a continuación, proporcionando una xpath o selector a hallazgo un elemento no es necesario. El siguiente código podría ayudar ..

Assert.assertEquals(driver.getPageSource().contains("text_to_search"), true); 
+0

Esto encontrará texto que existe en la fuente, pero no es visible para el usuario. Por ejemplo, si está buscando la palabra "cuerpo", esto siempre será verdadero. [Esta solución] (http://stackoverflow.com/a/42145466/531762) tampoco usa XPaths, pero solo encuentra texto visible. Además, esa solución incluye el texto que hace en el error de aserción para ayudar en la depuración. – Thunderforge

0

Una alternativa más simple (pero probablemente menos eficiente) a XPaths es sólo recibir todo el texto visible en el cuerpo de la página, así:

def pageText = browser.findElement(By.tagName("body")).getText(); 

Entonces, si usted Usando JUnit o algo así, puede usar una afirmación para verificar que la cadena que está buscando está contenida en ella.

assertThat("Text not found on page", pageText, containsString(searchText)); 

Usando un XPath es tal vez más eficiente, pero de esta manera es más fácil de entender para quienes no están familiarizados con ella. Además, un AssertionError generado por assertThat incluirá el texto que existe en la página, que puede ser deseable para la depuración ya que cualquiera que mire los registros puede ver claramente qué texto hay en la página si lo que estamos buscando no es.

Cuestiones relacionadas