java - 如何将导致异常的方法的错误消息传递给监听器中的 onTestFailure 方法

标签 java selenium testng extentreports

我正在尝试从导致 testng 监听器异常的方法打印异常消息,以便我可以在范围报告中打印它。我写过这样的代码

@Override
public void onTestFailure(ITestResult result) {
    String screenshotPath = "";
    try {
        screenshotPath = ScreenshotUtil.capture();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        test2.log(Status.FAIL, MarkupHelper.createLabel("Error occured", ExtentColor.RED));

        test2.addScreenCaptureFromPath(screenshotPath, "Error");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

我在下面的方法中抛出异常

public HomePage assertLoginSuccessful(boolean flag, String name) throws ExplicitAssertionError, IOException{
        waitForPageToLoad();
        WebDriverWait wait=new WebDriverWait(getDriver(), 5);
        String xpath="//a[@id='welcome'][contains(.,'Welcome "+name+"')]";
        try{
        wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(xpath)));
        if (flag){
                List<WebElement> list=getDriver().findElements(By.xpath(xpath));

                if (list.size()==0){
                    throw new ExplicitAssertionError("User name"+name+" not found hence login not successful");//this message should be passed to listener
                }
        }
        }catch (Exception ex){
            throw new ExplicitAssertionError("User name"+name+" not found hence login not successful");
        }
        return this;

最佳答案

接口(interface)ITestResult包含一个方法getThrowable来访问您在测试中抛出的异常。

您可以将以下代码添加到onTestFailure:

    if (null != result.getThrowable()) {
      String msg = result.getThrowable().getMessage();
    }

关于java - 如何将导致异常的方法的错误消息传递给监听器中的 onTestFailure 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55649648/

相关文章:

java - PHP/Java桥接问题

selenium - 在 Windows 窗体中嵌入 Selenium ChromeDriver

java - Selenium WebDriver - 在测试期间删除 cookie 并重新启动浏览器

java - 如何获取方法名称?

java - 如何获取与项目选择对应的不同工作空间

Java - 是否可以将 setEditable(boolean b) 应用于 JSlider/

css - 如何使用标准 CSS 选择器(nth-of-type 或 nth-child)为 Selenium 选择嵌套元素?

javascript - 如何使用 Selenium 打开带有哈希的 URL?

java - 在持续集成服务器上使用 logback 和 TestNG 的良好实践

java - 在 Java 中将特定枚举分配给 Class<Enum>