【开源自动化测试疑难FAQ】【WebDriver】RemoteWebDriver日志问题处理过程
来源:互联网 发布:网络言论法律 编辑:程序博客网 时间:2024/05/17 04:26
公司在用Jenkins做开源自动化测试脚本的统一执行调度和管理,涉及Selenium RC、WebDriver、Sahi、WatiJ等工具的脚本。随着JOB和执行的脚本越来越多,最近出现了下面的这种错误(详见微博http://weibo.com/1764147817/z1cLiCgjK):
据说这是Jenkins的一个BUG,研读代码发现是commons-io.jar在用整型返回一个文件的字节数,按理说应该是单个文件过大才会诱发这种问题,但是很明显这是文件集合在一起造成了该问题,所以说应该是一个ISSUE,需要被FIX的。
我没有兴趣和能力去研究或修改Jenkins的问题,所以暂且抛开这个问题,我们知道是因为我们在console上打印了过多日志导致的这个问题,所以先从build的console output入手。使用JUnit的case可以在build.xml中使用showoutput参数,设置为false即可屏蔽大量的工具运行日志。而使用TestNG的case……惭愧的很,实在没搞明白如何解决这个问题,至于setVerbose()或者在suite.xml/build.xml中的verbose=”0”的设置其实都是无法生效的,具体原因不清楚,也没有深入去读TestNG的代码。
既然框架解决不了,那就从工具配置想法子吧,由于我是用的RemoteWebDriver,所以去看了一下RemoteWebDriver.java的代码,发现excute方法里面有几个log记录的方法,所以前后分别修改工具类,在工具包中加了LogManager.getLogManager().reset()和logger.setUseParentHanlder(false),无果。在实验的过程中,意外发现这两种方法在最直接运行的class中可以生效,而在父类中是不行的,这就意味着需要一个全局的变量设置。为此,我们是否需要在每个case中都去写一段下面的代码呢?
static { logger.setUseParentHandlers(false); }
当然不能如此,这让写测试的同志们情何以堪呢!那么怎么办呢?很简单,只要Java运行时通过ant去build,它的全局变量都可以通过sysproperty key去设置,xml代码如下:
<targetname="runtask"description="运行构建">
<echomessage="……开始测试执行……"/>
<taskdefname="testng"classpathref="compile.cp"classname="com.beust.testng.TestNGAntTask"/>
<testngclasspathref="runtask.cp"
……
<sysproperty key= "java.util.logging.config.file" value="./config/logger.properties"/>
</testng>
</target>
这样,只要在工程下指定目录放置配置文件即可(/config/logger.properties),而这个logger.properties的配置也非常简单,可以参见如下配置,至于FileHanlder的配置也可以同类似的方法去配置。
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level= SEVERE
java.util.logging.ConsoleHandler.formatter= java.util.logging.SimpleFormatter
为什么要这么设置呢,因为remotewebdriver的日志生成是依赖于httpclient,而httpclient则使用了commons-logging,JCL为RemoteWebDriver日志记录实现的时候使用的是java.util.logging。至于commons-logging和log4j、java.util.logging之间的关系和使用方法,大家可以去google或者stackoverflow上面去查找,应该很容易理解。这两天为了这三者之间的关系和使用实在是死了不少脑细胞,没有一定的java开发经验做起相关的测试脚本开发和问题解决总是显得力不从心啊。
- 【开源自动化测试疑难FAQ】【WebDriver】RemoteWebDriver日志问题处理过程
- 【开源自动化测试疑难FAQ】【WebDriver】WebDriver对SWFUpload的无奈之举
- 【开源自动化测试疑难FAQ】【WebDriver】WebDriver启动时白屏挂起问题解决方法(一)
- 【开源自动化测试疑难FAQ】【WebDriver】WebDriver启动时白屏挂起问题解决方法(二)
- 【开源自动化测试疑难FAQ】【WebDriver】封装GET方法来解决页面跳转不稳定的问题
- 【开源自动化测试疑难FAQ】【WebDriver】几种类型的组件的判断
- 【开源自动化测试疑难FAQ】【WebDriver】不可编辑域和日历控件域的输入
- 【开源自动化测试疑难FAQ】【框架】TestNG运行失败汇总XML文件格式重塑
- 【开源自动化测试疑难FAQ】【框架】使用批处理进行过期的测试结果和空目录清理
- 【开源自动化测试疑难FAQ】【框架】测试数据之CSV文件的读写(带编码格式)
- 【开源自动化测试疑难FAQ】【框架】EXE/VBS/BAT/SHELL等文件的调用安全守护
- KDATFFS 开源自动化测试框架
- 开源自动化测试框架Tellurium
- TestNG 开源自动化测试框架
- Google的开源自动化测试框架
- Selenium开源自动化测试框架KDATFFS
- 《开源自动化测试实践》编著团队招募
- 开源自动化测试工具selenium的使用
- AutoFac文档2
- java第四周
- 怎样才能有自己的思维和idea
- vs2008 创建空MFC工程
- ZOJ_1051_A New Growth Industry
- 【开源自动化测试疑难FAQ】【WebDriver】RemoteWebDriver日志问题处理过程
- DirectX学习笔记
- 基于glut的OpenGL框架(一)
- 职场AB-001
- js----表单、css、正则表达式
- C#,我的第一道A+B题目
- RAM与ROM
- 职场AB-002
- 职场AB-003