selenium運行用例打印日誌及錯誤截圖

想了解更多請添加QQ羣:479186680

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);
        }       
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章