- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的 testng-selenium-java 项目使用 ExtentReports 和 ItestListener,我的监听器截取了 ExtentReports 失败测试用例的屏幕截图,但问题是我的 testng.XML 中有多个类,我一次运行它们,一个接一个地执行不同的操作并拥有自己的驱动程序。
在失败的情况下,Ilistener 的代码是 -
public void onTestFailure(ITestResult iTestResult)
{
System.out.println("I am in onTestFailure method " +
getTestMethodName(iTestResult) + " failed");
//Get driver from BaseTest and assign to local webdriver variable.
Object testClass = iTestResult.getInstance();
WebDriver webDriver = ((BaseTest) testClass).getDriver();
//Take base64Screenshot screenshot.
String base64Screenshot = "data:image/png;base64,"+((TakesScreenshot)webDriver).
getScreenshotAs(OutputType.BASE64);
//Extentreports log and screenshot operations for failed tests.
ExtentTestManager.getTest().log(LogStatus.FAIL,"Test Failed",
ExtentTestManager.getTest().addBase64ScreenShot(base64Screenshot));
}
如何确保每当测试用例失败时都会采用失败测试用例所在类的驱动程序,因为在上面的代码中始终只给出一个类的驱动程序,而不是当前类的驱动程序。
最佳答案
很简单,您可以在测试类中设置该属性,然后在监听器类中调用该属性
例如
testClass.java
@BeforeClass
public void setDriver(ITestContext context){
Webdriver driver = new FirefoxDriver();
context.setAttribute("WebDriver", driver);
}
@Test
public void t1(){
// your code
}
监听器.java
WebDriver driver = null;
@Override
public void onTestFailure(ITestResult result) {
ITestContext context = result.getTestContext();
driver = (WebDriver) context.getAttribute("WebDriver");
// your code
}
这里您需要注意,在您的测试类中您需要设置驱动程序属性,然后在该监听器中调用该属性一次。您的测试类和监听器类中的驱动程序将是相同的
关于java - 如何在 ItestListener 中获取当前的类驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50347922/
目前我正在使用 ExtentReport 生成自动化报告。 我使用 ExtentReport 的方式是使用 IReporter 实现在测试结束时生成报告,这很棒。 但是,现在我正在考虑创建一种在执行测
我正在为我的 testng-selenium-java 项目使用 ExtentReports 和 ItestListener,我的监听器截取了 ExtentReports 失败测试用例的屏幕截图,但问
我需要生成 testng 范围报告(版本 3)。我看到有两种方法可以生成范围报告。 这里,我不使用代码来解释两种情况。 Case 1: Creating a class implementing "I
有人知道如果测试失败首先会调用什么吗? 最佳答案 如果使用注解@AfterMethod,则注解的方法将在每个测试方法之后运行。如果您使用alwaysRun选项,那么即使先前调用的一个或多个方法失败或被
非常感谢您在这里提供任何建议。我正在尝试使用 TestNG 并实现 ITestListerner 接口(interface)来使用 POM 框架中的驱动程序对象。 这是一个实现 ItestListen
我有 2 个 TestNG 监听器,它们将日志记录信息报告到日志文件以获取调试信息。它们是 IConfigurationListener2 和 ITestListener。测试在多个线程中运行。 我的
当我使用 testng.xml 执行测试时,它运行正常,但是当我使用 pom.xml 执行测试时,出现错误: [ERROR] java.lang.UnsupportedClassVersionErro
我是一名优秀的程序员,十分优秀!