使用包含通配符的Assert(selenium webdriver)

i34xakig  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(357)

我正在尝试使用webdriver检查网页上是否不存在某些内容(在用户删除该内容之后)。
我正在使用try-catch方法来处理 NoSuchElementException ,但在“catch”中,我希望能够Assertnosuchelementexception包含文本“nosuchelementexception”,并对异常的其余部分使用通配符(因为异常中的其他细节每次都会更改)
下面是代码位的样子,正如您所见,我尝试使用*作为通配符来表示异常之后对我来说什么都不重要,我只希望它检查异常是否正确,并在此基础上通过测试:

catch (NoSuchElementException e1)
{
    Assert.assertEquals(e1, "org.openqa.selenium.NoSuchElementException: *");
}
fhg3lkii

fhg3lkii1#

你在接球 NoSuchElementException 在挡块里面你要检查它是不是 NoSuchElementException 不会增加任何价值。您正在测试jdk是否正常工作。
要检查页面上是否不存在元素,可以使用以下方法:

public boolean isElementPresent(By locatorKey) {
    try {
          driver.findElement(locatorKey);
          return true;
        } catch (org.openqa.selenium.NoSuchElementException e) {
          return false;
        }
}

然后你应该在上面的方法上Assert,
if元素不应存在

Assert.assertFalse(isElementPresent(By.id("login")));

如果元素应该存在

Assert.assertTrue(isElementPresent(By.id("login")));
6ie5vjzr

6ie5vjzr2#

我假设您使用的是testngAssert。如果是的话,我会用 contains 搜索部分匹配。

assertTrue(e1.getClass().toString.contains("org.openqa.selenium.NoSuchElementException:"));

相关问题