我正在使用 Selenium 2 和 Testng。selenium-java-2.33.0
尝试仅在失败的测试用例上截取浏览器的屏幕截图。我将 webdriver 存储在 Hashtable 中,并带有与每种浏览器类型(IE、Firefox、Chrome 和 Safari)相关联的 id。在清理例程“@afterMethod”中,我获取了那个 webdriver。这是代码:
//代码1:
if (webDriver instanceof TakesScreenshot) {
File tempFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(tempFile, new File("screenshots.png"));
}
//代码2:
EventFiringWebDriver efiringDriver = new EventFiringWebDriver(webDriver);
File scrFile = efiringDriver.getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("screenshot.png"));
两种代码路径都适用于 Firefox,但对于其他浏览器,会引发强制转换异常。
java.lang.ClassCastException: org.openqa.selenium.chrome.ChromeDriver 不能转换为 org.openqa.selenium.firefox.FirefoxDriver