我正试着用RemoteWebDriver of Winium.Desktop拍一张截图。由于RemoteWebDriver没有实现TakesScreenshot,所以我将对象声明为WebDriver。
WebDriver driver = new RemoteWebDriver(new URL(remoteUrl), desiredCapabilities);
WebDriver augmentedDriver = new Augmenter().augment(driver);
File screenshot = ((TakesScreenshot) augmentedDriver).getScreenshotAs(OutputType.FILE);当我尝试将其转换为get: java.lang.ClassCastException: org.openqa.selenium.remote.RemoteWebDriver时,不能将其转换为org.openqa.selenium.TakesScreenshot
当我打印驱动程序类名时,我得到了RemoteWebDriver,尽管它被声明为WebDriver。
我遗漏了什么?
发布于 2017-02-14 13:09:40
RemoteWebDriver确实实现了TakesScreenshot,WebDriver没有实现。所以也许你可以摆脱这个角色,它会解决你的问题,尽管你得到这个异常是很奇怪的。我猜想这可能是因为RemoteWebDriver的实现还没有完成。
但是,如果在运行时尝试使用getClass()检查类名,它将解析为实例的运行时类,这就是为什么您得到RemoteWebDriver.
所以在我看来,这就像是一个缺陷。
发布于 2017-02-14 05:46:41
RemoteWebDriver类不实现TakesScreenshot类。它与其他接口一起实现ITakesScreenshot接口,该接口具有GetScreenshot方法。因此,将类型转换更改为ITakeScreenshot.
我希望这对你有用。
https://stackoverflow.com/questions/42210510
复制相似问题