WebDriver实现自动截图

上一篇 / 下一篇  2013-07-25 10:21:58 / 个人分类:selenium

面朝大海,春暖花開......
专题五:脚本run的过程中,出现异常时,实现自动截图。
场景:在执行自动化测试过程中,难免会出现异常的时候。这个时候,若能把当时的图截取下来,这对我们对问题现象的分析很有帮助。
思路:在网上搜了很多资料后,发现很多人提到这个(cause instance of ScreenshotException),下面我也会给出相关代码。但目前本人才疏学浅,还没很好的弄明白,什么时候出现的异常属于ScreenshotException。所以现在实现的截图,是只要出现异常就截图,而不会再判断是否匹配instance of ScrrenshotException。
脚本:(JAVA语言实现)
public class EventListener extends AbstractWebDriverEventListener{
 @Override
 public void onException(Throwable throwable,WebDriver driver){
     SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
     Strubg dateString =formatter.format(new Date());
     String imgDir=System.getProperty("user.dir");
//    System.out.println("imgDir::"+imgDir);
     try{
      //截图并保存在D盘下
     File screenShotFile=((TakeScreenshot)driver).getScreenshotAs(OutputType.FILE);
     FileUtils.copyFile(screenShotFile,new File(imgDir+dateString+".jpg"));
//     System.out.println("开始截图");
     }
      catch(IOException e){
      System.out.println(Fail to capture screenshot:" +e.getMessage());
      }
    }
  }
封装driver的脚本
public class pageSourceFiles{
      private static WebDriver driver;
      protected static WebDriver getDriver(){
      if(driver==null){
      DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
      ieCapabilities.setCapability(InternetExplorerDriver.INTROUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
      driver = new InternetExplorerDriver(ieCapabilities);
      WebDriverEventListener eventListener = new EventListener();
      driver = new EventFiringWebDriver(driver);
     ((EventFiringWebDriver)driver).register(eventListener);
     }
    return driver;
  }
 
另给出cause instance of ScreenshotException 对应的脚本:
   private String extractScreenShot(Throwable ex){
       Throwable cause=ex.getCause();
       if(cause instanceof ScreenshotException){
            return ((ScreenshotException)cause).getBase64EncodedScreenshot();
       }
       return null;
   }

TAG:

 

评分:0

我来说两句

Open Toolbar