想了解更多请添加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);
}
}
}