Search code examples
javaeclipseseleniumjunitassert

How to assert elements contains text in Selenium using JUnit


I have a page that I know contains a certain text at a certain xpath. In firefox I use the following code to assert that the text is present:

assertEquals("specific text", driver.findElement(By.xpath("xpath)).getText());

I'm asserting step 2 in a form and confirming that a certain attachment has been added to the form. However, when I use the same code in Chrome the displayed output is different but does contain the specific text. I get the following error:

org.junit.ComparisonFailure: expected:<[]specific text> but was:<[C:\fakepath\]specific text>

Instead of asserting something is true (exactly what I'm looking for) I'd like to write something like:

assert**Contains**("specific text", driver.findElement(By.xpath("xpath)).getText());

The code above does not work obviously but I can't find how to get this done.

Using Eclipse, Selenium WebDriver and Java


Solution

  • Use:

    String actualString = driver.findElement(By.xpath("xpath")).getText();
    assertTrue(actualString.contains("specific text"));
    

    You can also use the following approach, using assertEquals:

    String s = "PREFIXspecific text";
    assertEquals("specific text", s.substring(s.length()-"specific text".length()));
    

    to ignore the unwanted prefix from the string.