WebDriver高级应用实例(8)
8.1使用Log4j在测试过程中打印日志
目的:在测试过程中,使用Log4j打印日志,用于监控和后续调试测试脚本
被测网页的网址:
http://www.baidu.com
环境准备:
(1)访问https://archive.apache.org/dist/logging/log4j/1.2.17/ 下载log4j-1.2.17.jar
(2)将log4j-1.2.17.jar添加至Eclipse的Build Path中即可
(3)需在工程根目录新建一个Log4j.xml文件,Log工具类文件和一个测试类文件TestLog4j。
Java语言版本的API实例代码
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="logfile.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n"/>
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="fileAppender"/>
</root>
</log4j:configuration>
Log工具类的代码如下:
import org.apache.log4j.Logger;
public class Log {
//初始化一个Logger对象
private static Logger Log = Logger.getLogger(Log.class.getName());
//定义一个静态方法,可以打印自定义的,某个测试用例开始执行的的日志信息
public static void startTestCase(String sTestCaseName){
Log.info("------------------------------------------");
Log.info("*********** "+sTestCaseName+" **************");
}
//定义一个静态方法,可以打印自定义的,某个测试用例结束执行的日志信息
public static void endTestCase(String sTestCaseName){
Log.info("***********"+"测试用例执行结束"+"**************");
Log.info("------------------------------------------");
}
//定义一个静态的info方法,打印info级别日志信息
public static void info(String message){
Log.info(message);
}
//定义一个静态warn方法,打印自定义级别warn级别日志信息
public static void warn(String message){
Log.warn(message);
}
//定义一个静态error方法,打印自定义的error级别日志信息
public static void error(String message){
Log.error(message);
}
//定义一个静态fatal方法,打印自定义fatal级别日志信息
public static void fatal(String message){
Log.fatal(message);
}
//定义一个静态debug方法,打印自定义debug级别日志信息
public static void debug(String message){
Log.debug(message);
}
}
TestLog4j测试类代码如下
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.apache.log4j.xml.DOMConfigurator;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass; public class TestLog4j {
WebDriver driver;
String url = "http://www.baidu.com";
@Test
public void testSearch() {
//向日志文件中打印搜索测试用例开始执行的日志信息
Log.startTestCase("搜索");
driver.get(url);
Log.info("打开百度首页");
//在搜索框中输入seleium
driver.findElement(By.id("kw")).sendKeys("seleium");
Log.info("输入搜索关键字“seleium”");
//单击搜索
driver.findElement(By.id("su")).click();
Log.info("单击搜索按钮");
Log.endTestCase("搜索");
}
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize(); } @AfterMethod
public void afterMethod() {
driver.quit();
}
@BeforeClass
public void beforeClass(){
DOMConfigurator.configure("log4j.xml");
}
}
执行结果:
执行测试类之后,会在当前测试工程的根目录生成一个日志文件logfile.log,生成日志如下

代码解释:
(1)日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指这条日志的重要程度
(2)Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)
(3)XML文件中的语句<appender name="fileAppender" class="org.apache.log4j.FileAppender">定义了log4j将日志信息打入日志文件中
(4)xml文件中的语句<param name = "Threshold" value="INFO"/>定义了日志信息的级别为info级别
(5)XML文件中的语句<param name = "File" value="logfile.log"/>定义了日志文件名为logfile.log,日志文件与xml文件在同一文件夹下,若不存在则自动创建此日志文件
(6)XML文件中的语句<param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n"/>定义了日志的格式信息,%d表示打印日志时候的年月日时分秒毫秒信息,%-5p表示日志的级别,%c{1}表示Logger对象的名字(在Log类中定义类名Log作为logger的名字),%m表示打印具体的日志内容,%n表示打印一个回车
WebDriver高级应用实例(8)的更多相关文章
- WebDriver高级应用实例(10)
10.1控制HTML5语言实现的视频播放器 目的:能够获取html5语言实现的视频播放器视频文件的地址.时长.控制进行播放暂停 被测网页的网址: http://www.w3school.com.cn/ ...
- WebDriver高级应用实例(9)
9.1封装操作表格的公用类 目的:能够使自己编写操作表格的公用类,并基于公用类进行表格中的元素的各类操作 被测网页的网址的HTML代码: <html> <body> <t ...
- WebDriver高级应用实例(7)
7.1在测试中断言失败的步骤进行屏幕截图 目的:在测试过程中,在断言语句执行失败时,对当前的浏览器进行截屏,并在磁盘上新建一个yyyy-mm-dd格式的目录,并在断言失败时新建一个已hh-mm-ss格 ...
- WebDriver高级应用实例(6)
6.1精确比较网页截图图片 目的:对于核心界面进行截屏,并且使用测试过程中的截图和以前测试过程中的截图进行比较.确认页面是否发生了改变 被测网页的网址: http://www.baidu.com Ja ...
- WebDriver高级应用实例(5)
5.1对象库(UI Map) 目的:能够使用配置文件存储被测试页面上的元素的定位方式和定位表达式,做到定位数据和程序的分离.方便不具备编码能力的测试人员进行修改和配置. 被测网页的网址: http:/ ...
- WebDriver高级应用实例(4)
4.1操作web页面的滚动条 被测网页的网址: http://v.sogou.com Java语言版本的API实例代码 import org.testng.annotations.Test; impo ...
- WebDriver高级应用实例(3)
3.1自动化下载某个文件 被测网页的网址: https://pypi.org/project/selenium/#files Java语言版本的API实例代码 import java.util.Has ...
- WebDriver高级应用实例(2)
2.1在日期选择器上进行日期选择 被测网页的网址: https://www.html5tricks.com/demo/Kalendae/index.html Java语言版本的API实例代码 impo ...
- WebDriver高级应用实例(1)
1.1使用JavaScriptExecutor单击元素 被测网页的网址: http://www.baidu.com Java语言版本的API实例代码 import org.testng.annotat ...
随机推荐
- 假期训练五(poj-1077bfs+康拓展开,hdu-2577dp)
题目一:传送门 思路:主要是找到状态, 考虑字母有两种状态,大写和小写, 从小写变为大写的变化方式有两种:保持cap状态,或者按住shift键: 从小写变为大写也有一种变化方式:按住shift键: 看 ...
- 证明LDU分解的唯一性
首先上(下)三角矩阵乘以上(下)三角矩阵结果还是上(下)三角矩阵, 另外我们考虑相乘后的对角元素可发现,对角原始是原来2矩阵对应对角元素的乘积. 另外对角线都是1的上(下)三角矩阵必定可以只是用行运算 ...
- 开启Greenplum DataBase报错:could not bind IPv4 socket: Address already in use
在运行gpstart时无法开启服务,查看日志看到下图所示错误: 查看日志错误大概是端口已被占用,所以无法重启. 解决方法: (1)利用ipcs查看数据库占用的共享内存.(如下图所示) (2)查看数据库 ...
- IntelliJ IDEA 2017版 spring-boot2.0.2 搭建 JPA springboot DataSource JPA 实体类浅谈
一.实体类分析 一般用到的实体类的类型有 String类型.Long类型.Integer类型.Double类型.Date类型.DateTime类型.Text类型.Boolean型等 1.String类 ...
- JavaBase
第一章: Java之父:詹姆斯.高斯林:1995年5月推出Java: java分为 java se : 基础版本(标准版) Java EE : 企业级开发 ME:嵌入式开发(已被安卓替代) ...
- Language Oriented Programming:下一代编程样式 Part I (翻译)
原文信息 原文地址 作者信息 Sergey Dmitriev JetBrains Sergey Dmitriev is the cofounder and CEO of JetBrains Inc., ...
- android-基础编程-Preference
由于SDK封装和提供了一套基于Preference的类,使用Preference通过编辑xml配置文件,只要很少的代码就可以实现了,而且Preference本身已经实现了参数保存,不需要我们再考虑将参 ...
- NSString copy && strong
http://www.cocoachina.com/ios/20150512/11805.html 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):stro ...
- Codeforces Round #264 (Div. 2) D. Gargari and Permutations 多序列LIS+dp好题
http://codeforces.com/contest/463/problem/D 求k个序列的最长公共子序列. k<=5 肯定 不能直接LCS 网上题解全是图论解法...我就来个dp的解法 ...
- 方案dp。。
最近经常做到组合计数的题目,每当看到这种题目第一反应总是组合数学,然后要用到排列组合公式,以及容斥原理之类的..然后想啊想,最后还是不会做.. 但是比赛完之后一看,竟然是dp..例如前几天的口号匹配求 ...