如何使用JUnit在Selenium中Assert包含文本的元素

nnt7mjpx  于 2023-03-02  发布在  其他
关注(0)|答案(4)|浏览(149)

我有一个页面,我知道它在某个xpath中包含了某个文本,在firefox中,我使用下面的代码来Assert这个文本存在:

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

我在表单中Assert步骤2,并确认某个附件已添加到表单中。然而,当我在Chrome中使用相同的代码时,显示的输出不同,但包含特定的文本。我得到以下错误:

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

与其Assert某件事是真的(这正是我所寻找的),我想写这样的东西:

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

上面的代码显然不起作用,但我找不到如何做到这一点。
使用Eclipse、Selenium Web驱动程序和Java

1bqhqjot

1bqhqjot1#

use:

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

您还可以使用assertEquals,使用以下方法:

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

忽略字符串中不需要的前缀。

lx0bsm1f

lx0bsm1f2#

可以使用两个方法assertEquals和assertTrue。

String actualString = driver.findElement(By.xpath("xpath")).getText();

String expectedString = "ExpectedString";

assertTrue(actualString.contains(expectedString));
r6l8ljro

r6l8ljro3#

您也可以使用以下代码:

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

gblwokeq4#

它不是直接和assert,而是使用wait.untilExpectedCondition,如果不满足条件,测试将失败:

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"));
    }

相关问题