在测试中对断言失败的步骤进行截图并保存!

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();
          
          
      }
      
      
  }

}

 

转载于:https://www.cnblogs.com/linbo3168/p/6125889.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值