我试图使用webdriver检查网页上是否存在某些内容(在用户删除之后)。
我使用try-catch方法来处理NoSuchElementException
,但在' catch'我希望能够断言NoSuchElementException包含文本" NoSuchElementException",并在异常的其余部分使用通配符(因为异常中的其他细节每次都会更改)
这里有一些代码看起来像什么,你可以看到我已经尝试使用*作为外卡来表明异常后没有任何事情对我来说很重要,我只想要它检查异常是否正确,并根据以下内容通过测试:
catch (NoSuchElementException e1)
{
Assert.assertEquals(e1, "org.openqa.selenium.NoSuchElementException: *");
}
答案 0 :(得分:3)
您正在捕获NoSuchElementException
并且在catch块中,您正在检查它是否是NoSuchElementException
,它不会添加任何值。您正在测试JDK是否正常工作。
要检查页面上是否不存在该元素,您可以使用如下方法:
public boolean isElementPresent(By locatorKey) {
try {
driver.findElement(locatorKey);
return true;
} catch (org.openqa.selenium.NoSuchElementException e) {
return false;
}
}
然后你应该断言上面的方法,
如果元素不存在
Assert.assertFalse(isElementPresent(By.id("login")));
如果元素应该存在
Assert.assertTrue(isElementPresent(By.id("login")));
答案 1 :(得分:0)
我假设您正在使用TestNG断言。如果是这样,我会使用contains
来搜索部分匹配。
assertTrue(e1.getClass().toString.contains("org.openqa.selenium.NoSuchElementException:"));
答案 2 :(得分:0)
感谢LINGS,这真的很有帮助。我实际上将所有findelement方法存储在另一个类/包中,类似于PageObject模型,那么我将如何做到这一点,并考虑到这一点?我尝试了以下但是似乎没有工作。这里我使用Documents.file1指向xpath我试图断言为false,而Driver.driver是IEDriver类:
public boolean isElementPresent(Documents.file1(Driver.driver)) {
try {
Documents.file1(Driver.driver);
return true;
} catch (org.openqa.selenium.NoSuchElementException e) {
return false;
}
Assert.assertFalse(isElementPresent(Documents.file1(Driver.driver)));
}