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