【问题标题】:Selenium2: Taking screenshots with selenium grid 2Selenium2:使用 selenium 网格 2 截屏
【发布时间】:2011-08-16 14:57:53
【问题描述】:

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

标记

【问题讨论】:

    标签: screenshot webdriver selenium-webdriver webpage-screenshot


    【解决方案1】:

    必须先扩充RemoteWebDriver,然后才能使用屏幕截图功能。毫无疑问,您已经发现,尝试在不增加的情况下进行投射会导致异常。

    WebDriver driver = new RemoteWebDriver( ... );
    driver           = new Augmenter().augment( driver );
    ( (TakesScreenshot)driver ).getScreenshotAs( ... );
    

    【讨论】:

    • 谢谢 Mike... 代码需要一些修复,但效果很好 :)
    • 以防万一有人在寻找它 driver = new Augmenter().augment(driver);
    【解决方案2】:

    您需要编写一个扩展 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; 
        } 
    }
    

    【讨论】:

    • 谢谢尼莱什。我认为另一种方法(Augmenter)更清洁。 :)
    • 是的。在 Augmenter 成为 API 的一部分之前,我就已经有了这个。
    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2014-02-05
    • 2017-12-15
    • 1970-01-01
    • 2011-03-26
    相关资源
    最近更新 更多