Можно ли делать скриншоты с помощью Selenium Grid 2? Класс RemoteWebDriver не реализует интерфейс TakesScreenshot.
Отметка
Можно ли делать скриншоты с помощью Selenium Grid 2? Класс RemoteWebDriver не реализует интерфейс TakesScreenshot.
Отметка
RemoteWebDriver
должен быть расширен, прежде чем вы сможете использовать возможность скриншота. Как вы, без сомнения, уже обнаружили, попытка приведения без увеличения приводит к исключению.
WebDriver driver = new RemoteWebDriver( ... );
driver = new Augmenter().augment( driver );
( (TakesScreenshot)driver ).getScreenshotAs( ... );
Вам нужно будет написать класс-оболочку, который расширяет RemoteWebDriver и реализует интерфейс TakeScreenshot, как показано ниже, в java.
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;
}
}