С сегодняшнего дня не могу с падающих тестов снимать скриншоты используя FireFoxDriver и ChromeDriver. Запускаю так:
mvn clean test
При этом PhantomJSDriver делает скриншоты без проблем. Может я чего-то случайно где-то поменял, но не пойму в чём может быть причина.. Ошибка
org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68) Caused by: java.lang.ClassCastException: org.openqa.selenium.firefox.FirefoxDriver cannot be cast to org.openqa.selenium.TakesScreenshot at pageobjects.TestListener.onTestFailure(TestListener.java:29) at org.testng.internal.Invoker.runTestListeners(Invoker.java:1895) at org.testng.internal.Invoker.runTestListeners(Invoker.java:1879) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1292) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) at org.testng.TestRunner.privateRun(TestRunner.java:767) at org.testng.TestRunner.run(TestRunner.java:617) at org.testng.SuiteRunner.runTest(SuiteRunner.java:348) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:343) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305) at org.testng.SuiteRunner.run(SuiteRunner.java:254) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) at org.testng.TestNG.run(TestNG.java:1057) at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:70) at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:109) at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:111) ... 9 more
аналогично с FirefoxDriver
Вот метод в моём TestListener.java
@Override public void onTestFailure(ITestResult tr) { log(tr.getName()+ "--Test case FAILED\n"); Object currentClass = tr.getInstance(); WebDriver driver = ((WebDriverManager) currentClass).getDriverInstance(); scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); DateFormat dateFormat = new SimpleDateFormat("dd_MMM_yyyy__hh_mm_ssaa"); destDir = "target/surefire-reports/screenshots"; new File(destDir).mkdirs(); destFile = dateFormat.format(new Date()) + "_" + tr.getName() +".png"; try { FileUtils.copyFile(scrFile, new File(destDir + "/" + destFile)); } catch (IOException e) { e.printStackTrace(); } Reporter.setEscapeHtml(false); Reporter.log("Saved <a href=../screenshots/" + destFile + ">Screenshot</a>"); }
Вроде бы раньше всё работало вне зависимости от драйвера.