zoukankan      html  css  js  c++  java
  • 在测试中对断言失败的步骤进行截图并保存!

    1.目的 :在测试当中,在断言语句执行失败的时候,对当前浏览器显示的内容进行截图操作,并且在磁盘上新建一个名为当天日期(yyyy-mm-dd)的目录,并在目录中新建一个名称以断言执行失败时发生时间表示的hh-mm-dd格式的截图文件;

    2.步骤:创建DateUtil类 来获取 年 月 日 时 分 秒  ;

    3.创建FileUtil 类 进行创建目录 保存 截图文件 ;

    4.代码如下:

    package scr.comm;
    import java.util.*;
    public class DateUtil {
    
        /*
         * 格式化输出日期 ;
         * 
         * @return 一个字符型日期;
         */
        public static String format(java.util.Date date, String format) {
            String result = "";
            try {
                if (date != null) {
                    java.text.DateFormat df = new java.text.SimpleDateFormat(format);
                    result = df.format(date);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    //返回年份 ;
        public  static int getYear(java.util.Date date){
            java.util.Calendar c= java.util.Calendar.getInstance();
            c.setTime(date);
            return c.get(java.util.Calendar.YEAR);        
        }
    //返回月份 ;
        public static int getMonth(java.util.Date date){
            java.util.Calendar calendar =java.util.Calendar.getInstance();
            calendar.setTime(date);
        return     calendar.get(java.util.Calendar.MONTH)+1;
        }
    //返回月份中的第几天;
        public  static int getDay(java.util.Date date){
        java.util.Calendar calendar =java.util.Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(java.util.Calendar.DAY_OF_MONTH);
        }
        //返回小时;
        public  static int getHour(Date date){
        Calendar calendar=Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.HOUR);
        }
    //返回分钟 ;
        public static int getMinute(Date date ){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.MINUTE);
        }
    //返回秒    
        public static int getSecond(Date date ){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.SECOND);
        }
    }
    package scr.comm;
    
    import java.io.File;
    import java.io.IOException;
    
    /*
     * FileUtil 用于创建目录和文件,此例子中指使用了该类创建目录的方法,创建文件仅供大家参考;
     */
    public class FileUtil {
    
        public static boolean createFile(String destFileName) {
            File file = new File(destFileName);
            if (file.exists()) {
                System.out.println("创建" + destFileName + "失败,因为该文件已经存在!");
                return false;
            }
            if (destFileName.endsWith(File.separator)) {
                System.out.println("创建单个文件 " + destFileName + "失败,因为目标文件不能为目录!");
                return false;
            }
            // 判断目标文件所在目录是否存在 ;
            if (!file.getParentFile().exists()) {
                // r如果目标文件不存在创建父目录 ;
                System.out.println("目标文件不存在,准备创建它!");
                if (!file.getParentFile().mkdirs()) {
                    System.out.println("创建目标文件所在目录失败");
                    return false;
                }
            }
            try {
                if (file.createNewFile()) {
                    System.out.println("创建" + destFileName + "成功!");
                    return true;
                } else {
                    System.out.println("c创建 " + destFileName + " 失败!");
                    return false;
                }
    
            } catch (IOException e) {
                System.out.println("创建 " + destFileName + " 失败!" + e.getMessage());
                return false;
            }
        }
    
        public static boolean createDir(String destDirName) {
            File dir = new File(destDirName);
            if (dir.exists()) {
                System.out.println("创建目失败" + destDirName + "已经存在!");
                return false;
            }
            // 创建目录;
            if (dir.mkdirs()) {
                System.out.println("创建目录" + destDirName + "成功 !");
                return true;
            } else {
                System.out.println("创建目录" + destDirName + "失败 !");
                return false;
            }
    
        }
    
    }

    测试类:

    package testNGPractice;
    
    import java.io.File;
    
    import org.apache.commons.io.FileUtils;
    import org.junit.Assert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.testng.annotations.AfterMethod;
    import org.testng.annotations.BeforeMethod;
    import org.testng.annotations.Test;
    
    import scr.comm.DateUtil;
    import scr.comm.FileUtil;
    import scr.comm.Log;
    import scr.comm.OpenBrowserInfo;
    
    public class TestFailCaptureScreen {
     public  WebDriver driver  ;
        @Test
      public void f() {
    Log.startTextCase("@Test 开始执行!");
            String url ="http://www.sogou.com/";
        driver.navigate().to(url);
        driver.findElement(By.id("query")).sendKeys("光荣之路自动化测试!");
        driver.findElement(By.id("stb")).click();
        try{
            Assert.assertTrue(driver.getPageSource().contains("事在人为"));
            System.out.println("assert 执行了!");
        }catch(AssertionError e){
            System.out.println("catch  中的代码 被执行了!");
            takeTakesScreenShot(driver);
            
        }
    Log.endTestCase("@Test 执行结束 !");    
            
      }
      @BeforeMethod
      public void beforeMethod() {
          OpenBrowserInfo.Log4jInitialize();
          OpenBrowserInfo.SystemSetProperty();
          driver =new FirefoxDriver() ;  
      }
    
      @AfterMethod
      public void afterMethod() {
          driver.quit();
      }
      public void takeTakesScreenShot(WebDriver driver){
          try{
              //生成日期
              java.util.Date date =new java.util.Date();
              String picDir="D:\"+
                      String.valueOf(DateUtil.getYear(date)+"-"+
                      String.valueOf(DateUtil.getMonth(date))+"-"+
                      String.valueOf(DateUtil.getDay(date))/*+" "+
                      String.valueOf(DateUtil.getHour(date))+"_"+
                      String.valueOf(DateUtil.getMinute(date))+"_"+
                      String.valueOf(DateUtil.getSecond(date))*/
                      );
             //创建目录;
              if(!new File(picDir).exists()){
                  FileUtil.createDir(picDir);
              }
              //调用DateUtil类生成 截图文件的名称;
              String filePath=picDir + "\" +
                      String.valueOf(DateUtil.getHour(date))+"_"+
                      String.valueOf(DateUtil.getMinute(date))+"_"+
                      String.valueOf(DateUtil.getSecond(date))+".png" ;
              //进行截图,并将文件内容保存到srcFile对象当中
              File srcFile= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
              //将截图文件内容写入到磁盘当中去;
              FileUtils.copyFile(srcFile,new File(filePath));
          }catch(Exception e ){
              e.printStackTrace();
              
              
          }
          
          
      }
    
    }
  • 相关阅读:
    字符串和编码
    Python基础
    输入和输出
    Python代码运行助手
    使用文本编辑器
    第一个Python程序
    pycharm中创建并设置docker解释器
    docker 在windows上的使用
    Python time datetime模块
    Linux安装字体文件
  • 原文地址:https://www.cnblogs.com/linbo3168/p/6125889.html
Copyright © 2011-2022 走看看