Selenium 从Testng运行测试组时在Testlistener中获取java.lang.ClasscastException
我试图使用Testlistner类运行一个存储在TestVWLoginPage和Testng中的测试用例,当在testlistener中将驱动程序从基类存储到局部变量时,我遇到了classcast异常 我已经附加了Testlistenere类、错误代码和第行的受影响代码 在调试过程中,我意识到如果我不在testng文件ie中运行组,它可以正常工作Selenium 从Testng运行测试组时在Testlistener中获取java.lang.ClasscastException,selenium,testng,Selenium,Testng,我试图使用Testlistner类运行一个存储在TestVWLoginPage和Testng中的测试用例,当在testlistener中将驱动程序从基类存储到局部变量时,我遇到了classcast异常 我已经附加了Testlistenere类、错误代码和第行的受影响代码 在调试过程中,我意识到如果我不在testng文件ie中运行组,它可以正常工作 <groups> <run> <include name = "Guitest" />
<groups>
<run>
<include name = "Guitest" />
</run>
</groups>
<classes>
<class name = "VWAutomationTest.TestVWLoginPage" />
</classes>
}
我失败的代码-
@Override
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 = ((BaseClass) 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));
}
例外情况呢-
java.lang.ClassCastException: VWAutomationTest.TestVWLoginPage cannot be cast to Utility.BaseClass
at Listeners.TestListener.onTestFailure(TestListener.java:68)
at org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:67)
at org.testng.internal.Invoker.runTestListeners(Invoker.java:1388)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1041)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
请将您的ITestResult.class和BaseClass.class添加到您的问题中,如果您需要测试类,您可能需要编写testClass=ITestResult.getTestClass()。以前工作正常,现在我已将基类转移到单独的包中,我也已将该包导入Testlistener中。
java.lang.ClassCastException: VWAutomationTest.TestVWLoginPage cannot be cast to Utility.BaseClass
at Listeners.TestListener.onTestFailure(TestListener.java:68)
at org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:67)
at org.testng.internal.Invoker.runTestListeners(Invoker.java:1388)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1041)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)