selenium运行用例打印日志及错误截图

发表于:2021-7-12 09:59

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Sorin-zheng    来源:CSDN

  selenium运行自动化用例中,并不支持log和错误截图功能,但是在apache中有一个打印日志的jar包log4j及结合java中的IO来实现这些功能。
  Log4j日志功能 
  1.控制日志信息输送的目的地是控制台、文件等; 
  2.控制每一条日志的输出格式; 
  3.通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程;
  4.最不错的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
  屏幕截图功能 
  截图捕获功能可以在用例失败时进行截图,帮助我们更好地分析结果。
  log4j.xml代码:
  <?xml version="1.0" encoding="utf-8"?>
  <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
      <appender name="fileAppender" class="org.apache.log4j.FileAppender">
          <param name="Threshold" value="INFO" />
          <param name="File" value="seleniumRunLog.log"/>
              <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss}  [%c] (%t:%x) %m%n" />
              </layout>
      </appender>
      <root>
          <level value="INFO"/>
          <appender-ref ref="fileAppender"/>
      </root>
  </log4j:configuration>
  以下是详细代码:
  package com.autotest.publicmethod;
  import java.io.File;
  import java.io.IOException;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  import org.apache.commons.io.FileUtils;
  import org.apache.log4j.LogManager;
  import org.apache.log4j.Logger;
  import org.apache.log4j.xml.DOMConfigurator;
  import org.openqa.selenium.By;
  import org.openqa.selenium.OutputType;
  import org.openqa.selenium.TakesScreenshot;
  import org.openqa.selenium.WebDriver;
  import org.openqa.selenium.WebElement;
  import com.autotest.businesskeyword.BrowserDriver;
  public class JavaEncapsulationMethod {
      private static WebElement element = null;   
      public static String getCurrentSystemTime(){
          Date now = new Date(); 
          SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
          String time = dateFormat.format( now );
          return time;
      }
      public static void  errorScreenshot(WebDriver driver,String path,String pictureFormat) throws IOException{
          String systemTime = JavaEncapsulationMethod.getCurrentSystemTime();
          String pictureName = systemTime + pictureFormat ;
          File  jpg = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
          FileUtils.copyFile(jpg, new File(path + pictureName));
      }
      public static WebElement elementException(WebDriver driver,By by,String elementName,String className) throws Exception{
          Logger log = LogManager.getLogger(className);
          DOMConfigurator.configure("log4j.xml");
          try{
              element = driver.findElement(by);
              element.isDisplayed();          
              log.info(elementName+"元素存在");
              return element;
          }
          catch(Exception e){
              log.error(elementName+"元素不存在,浏览器关闭,请查看截图并查找原因");
              JavaEncapsulationMethod.errorScreenshot(driver, "E:/workspace/Automation/errorPictrue/", ".jpg");
              BrowserDriver.closeBrowser(driver);
              throw(e);
          }       
      }
  }

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号