他们在互联网上有大量资源,但是我找不到解决我问题的简单方法。
我希望测试用例失败,并报告一条有意义的消息,而不是完整的堆栈跟踪。
我尝试使用try,catch,if,else,但是我希望我的测试失败,不要通过并抛出消息。
场景-加载url,如果url未加载则抛出错误并中止测试并转到加载下一个url的下一个迭代
任何解决方案吗?
答案 0 :(得分:0)
您可以尝试... try catch
try {
doStuff();//this code is failing
}
catch (YourExpectedException e){ //catch the correct exception here
//this passes your custom message AND the caught exception
//should also stop the test
throw new AssertionError("This is my custom message", e);
}
答案 1 :(得分:0)
有两种方法可以做到这一点。我想向您推荐最简单,最漂亮的方法。
1)检查异常,如果您指定了异常,则将执行一些代码或执行某些操作。这是示例:
@AfterMethod
public void afterMethod(ITestResult result) throws IOException {
Throwable exception = result.getThrowable();
if (exception instanceof org.openqa.selenium.TimeoutException
||
exception instanceof org.openqa.selenium. NoSuchElementException) {
Assert.fail("Some message or code");
}
}
2) 您可以在项目中实现 WebDriverEventListener 。
是什么意思?
这意味着WebDriver允许在某些事件之前和之后执行一些逻辑。您可以在方法的实现中添加try-catch。
示例:
@Override
public void beforeFindBy(By by, WebElement webElement, WebDriver webDriver) {
// your code
}
@Override
public void afterFindBy(By by, WebElement webElement, WebDriver webDriver) {
// your code
}
@Override
public void beforeClickOn(WebElement webElement, WebDriver webDriver) {
// your code
}
@Override
public void afterClickOn(WebElement webElement, WebDriver webDriver) {
// your code
}
这里是更详细的示例:link