Arquillian Graphene waitModel TimeoutException允许测试以Error而不是Failure结束

时间:2018-03-22 09:39:23

标签: java selenium junit jboss-arquillian arquillian-drone

我认为我的问题与代码无关,而是在测试中等待UI-Elements,或者至少我对使用JUnit和Selenium / Arquillian Graphene测试UI的理解。

当使用Arquillian Graphenes waitModel()(或等待UI-Elements的任何其他方法)并且在指定的超时后该元素不存在时,我得到一个seleniumTimeoutException,它让我的JUnit-Test结束了&# 34;错误"

ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 151.709 s <<< FAILURE! - in de.viasurance.UiTest
[ERROR] testHappyPath(org.test1.UiTest)  Time elapsed: 23.266 s  <<< ERROR!
org.openqa.selenium.TimeoutException: 

是否有更好的方法让测试结束&#34;失败&#34;没有围绕我的测试的每一行使用try / catch-block,如下所示:

try {
waitModel().withMessage("waiting for loginButton").until().element(loginButton).is().clickable();
} catch (TimeoutException timeoutException) {
fail("UI-Test failed because the following UI-element could not be found: \n" + timeoutException.getMessage());
}

1 个答案:

答案 0 :(得分:0)

您不必用try / catch块包围它,也不必在catch块中失败

测试框架本身应该注意这一点。 TestNG在这里做得很好。

Graphene.waitModel()
        .withMessage("Login Button Not clickable")
        .until()
        .element(loginButton)
        .is()
        .clickable();

对于Junit,您可以使用TestWatcher来检测错误并相应地失败。