2

セレングリッド2を使用してスクリーンショットを撮ることは可能ですか?RemoteWebDriverクラスは、TakesScreenshotインターフェイスを実装していません。

マーク

4

2 に答える 2

5

RemoteWebDriverスクリーンショット機能を使用する前に、を拡張する必要があります。すでにわかっていることは間違いありませんが、拡張せずにキャストしようとすると、例外が発生します。

WebDriver driver = new RemoteWebDriver( ... );
driver           = new Augmenter().augment( driver );
( (TakesScreenshot)driver ).getScreenshotAs( ... );
于 2011-08-16T15:20:56.720 に答える
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; 
    } 
}
于 2011-08-16T16:33:48.713 に答える