Selenium2:使用selenium grid 2截取屏幕截图

时间:2011-08-16 14:57:53

标签: screenshot webdriver selenium-webdriver webpage-screenshot

是否可以使用selenium grid 2截取屏幕截图? RemoteWebDriver类没有实现TakesScreenshot接口。

标记

2 个答案:

答案 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; 
    } 
}