是否可以使用selenium grid 2截取屏幕截图? RemoteWebDriver类没有实现TakesScreenshot接口。
标记
答案 0 :(得分:5)
必须先扩充RemoteWebDriver
,然后才能使用屏幕截图功能。毫无疑问,你已经发现,试图在没有增加的情况下进行投射会导致异常。
WebDriver driver = new RemoteWebDriver( ... );
driver = new Augmenter().augment( driver );
( (TakesScreenshot)driver ).getScreenshotAs( ... );
答案 1 :(得分:0)
你需要编写一个包装类来扩展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;
}
}