Reputation: 323
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
Upvotes: 8
Views: 104325
Reputation: 18507
It's not directly and assert
however and other way is to use a wait.until
and ExpectedCondition
, then if condition is not satisfied the test will fail:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
@FindBy(xpath = "xpath")
private WebElement xpathElementToCheckText;
public void checkElementText() {
WebDriverWait wait = new WebDriverWait(driver, 10); // timeout in seconds
wait.until(ExpectedConditions.textToBePresentInElement(xpathElementToCheckText,"specific text"));
}
Upvotes: 0
Reputation: 2556
You can also use this code:
String actualString = driver.findElement(By.xpath("xpath")).getText();
Assert.assertTrue(actualString.contains("specific text"));
Upvotes: 2
Reputation: 545
Two Methods assertEquals and assertTrue could be used. Here is the usage
String actualString = driver.findElement(By.xpath("xpath")).getText();
String expectedString = "ExpectedString";
assertTrue(actualString.contains(expectedString));
Upvotes: 2
Reputation: 56626
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.
Upvotes: 19