我正在尝试使用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

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

我想念什么?

最佳答案

RemoteWebDriver确实实现了TakesScreenshot,而WebDriver没有实现。因此,也许您可​​以摆脱强制转换,并且可以解决您的问题,尽管您很奇怪能收到该异常。我的猜测是,可能是因为Winium的RemoteWebDriver的实现不完整。

但是,如果尝试在运行时使用getClass()检查类名,则它将解析为实例的运行时类,这就是为什么要获取RemoteWebDriver的原因。

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

关于java - 无法将RemoteWebDriver强制转换为org.openqa.selenium.TakesScreenshot(Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42210510/

10-12 06:06