RemoteWebDriver无法强制转换为org.openqa.selenium.TakesScreenshot(Java)

时间:2017-02-13 18:00:41

标签: java selenium remotewebdriver

我正在尝试使用Winium.Desktop的RemoteWebDriver截取屏幕截图。 由于RemoteWebDriver没有实现TakesScreenshot,我将对象声明为WebDriver。

WebDriver driver = new RemoteWebDriver(new URL(remoteUrl), desiredCapabilities);

WebDriver augmentedDriver = new Augmenter().augment(driver);
File screenshot = ((TakesScreenshot) augmentedDriver).getScreenshotAs(OutputType.FILE);

当我尝试将它投射到我时: java.lang.ClassCastException:org.openqa.selenium.remote.RemoteWebDriver无法强制转换为org.openqa.selenium.TakesScreenshot

当我打印驱动程序类名时,我得到了RemoteWebDriver,尽管它被声明为WebDriver。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

RemoteWebDriver确实实施了TakesScreenshotWebDriver没有。所以也许你可以摆脱演员,它会解决你的问题,虽然你得到那个例外是非常奇怪的。我的猜测可能是因为Winium的RemoteWebDriver实现并不完整。

但是,如果您在运行时尝试使用getClass()检查类名,它会解析为实例的运行时类,这就是您获得RemoteWebDriver ...

的原因

所以对我来说,它似乎是Winium中的缺陷

答案 1 :(得分:0)

RemoteWebDriver类没有实现TakesScreenshot类。它实现 ITakesScreenshot 接口以及其他接口,此接口具有GetScreenshot方法。因此,将类型转换更改为 ITakeScreenshot

我希望这适合你。