是否可以使用 selenium grid 2 截屏?RemoteWebDriver 类不实现 TakesScreenshot 接口。
标记
是否可以使用 selenium grid 2 截屏?RemoteWebDriver 类不实现 TakesScreenshot 接口。
标记
必须先增强 ,然后RemoteWebDriver
才能使用屏幕截图功能。正如您毫无疑问已经发现的那样,尝试在不增加的情况下进行转换会导致异常。
WebDriver driver = new RemoteWebDriver( ... );
driver = new Augmenter().augment( driver );
( (TakesScreenshot)driver ).getScreenshotAs( ... );
您需要编写一个扩展 RemoteWebDriver 的包装类,并在 java 中实现 TakeScreenshot 接口,如下所示。
public class ScreenShotRemoteWebDriver extends RemoteWebDriver implements TakesScreenshot
{
public ScreenShotRemoteWebDriver(URL url, DesiredCapabilities dc) {
super(url, dc);
}
@Override
public <X> X getScreenshotAs(OutputType<X> target) throws WebDriverException {
if ((Boolean)getCapabilities().getCapability(CapabilityType.TAKES_SCREENSHOT)) {
return target.convertFromBase64Png(execute(DriverCommand.SCREENSHOT).getValue().toString());
}
return null;
}
}