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

Sorin · 2018年04月06日 · 1193 次阅读

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);
        }       
    }
}
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册