LoggingSelenium如何收集日志信息
2014-07-26 10:01
393 查看
本文对前几天写的文章《LoggingSelenium入门第一课》中的源代码详细解读一下,分享LoggingSelenium如何收集日志信息,为以后开发收集WebDriver日志信息的软件做准备。
首先,创建一个BufferedWriter实例.
其中,需要为LoggingUtils的createWriter()方法提供三个参数。
1. html日志文件的绝对路径,例子为变量代表的路径resultHtmlFileName
2. 日志文件的字符集编码,例子中为变量RESULT_FILE_ENCODING指定的字符集。
3. 布尔值,true表示如存在同名结果文件则覆盖。
接着,创建一个HtmlResultFormatter实例.
其中使用构造方法,创建实例时需要指定的参数为:
1. BufferedWriter,在上文中已经创建
2. 日志文件的字符集编码,和上文中的编码一致。
创建实例完毕后,需要调用的方法设置更多信息:
1. setScreenShotBaseUri()方法,为截图设置URI
2. setAutomaticScreenshotPath()为自动截图设置图片保存路径
然后,创建一个LoggingCommandProcessor实例。
其中,LoggingCommandProcessor有2个构造方法,一个是public LoggingCommandProcessor(CommandProcessor HttpCommandProcessor, LoggingResultsFormatter myFormatter),另外一个 public LoggingCommandProcessor(String serverHost, int serverPort, String browserStartCommand, String browserUrl,
LoggingResultsFormatter myFormatter)。
本例中使用的第一个,需要为其提供的参数为:
HttpCommandProcessor对象,需要为该对象提供参数,Selenium Server运行信息、待测应用的URl等
LoggingResultsFormatter,在上文中已经创建,即变量htmlFormatter。
在初始化LoggingCommandProcessor时,其他值得一提的实例是:
public final TestMetricsBean seleniumTestMetrics = new TestMetricsBean();
用于收集Selenium Server版本信息、执行环境信息、执行命令的数目等。
List<LoggingBean> loggingEventsQueue = new ArrayList<LoggingBean>();
用于保存LoggingBean信息的列表,用于收集执行过程中的执行日志信息,包括命令名称、参数、执行结果、起止时间、相关的调用信息等等。
最后,创建一个LoggingDefaultSelenium实例。
LoggingDefaultSelenium类继承DefaultSelenium类,并实现了接口LoggingSelenium。
其中,使用的构造方法是public LoggingDefaultSelenium(final CommandProcessor commandProcessor),使用的参数为上文中创建的LoggingCommandProcessor实例myProcessor。
准备构造工作已经完成,下面来看看是如何收集具体日志信息的。
先看看start()方法:
LoggingDefaultSelenium继承父类DefaultSelenium的start()方法,执行时进一步调用LoggingCommandProcessor的start()方法,该方法调用HttpCommandProcessor的start()方法完成Selenium的启动,然后为TestMetricsBean实例设置程序开始时间,并调用logExecutionEnvironment(),为TestMetricsBean实例提供更多信息。
再看看open()等具体的执行业务的方法:
LoggingDefaultSelenium继承父类DefaultSelenium的open()方法,执行时进一步调用LoggingCommandProcessor的public String doCommand(String commandName, String[] args) ()方法。该方法调用HttpCommandProcessor的doCommand()方法完成命令操作,收集日志信息。继续以open()方法为例,为TestMetricsBean实例中的命令数目增加1,并调用void
doLogging(String commandName, String[] args, String result, long cmdStartMillis) 方法收集所运行的命令信息,保存在List<LoggingBean> loggingEventsQueue,供后续调用。
最后,来看看stop()方法:
LoggingDefaultSelenium继承父类DefaultSelenium的open()方法,执行时进一步调用LoggingCommandProcessor的stop()方法。该方法调用seleniumTestFinished()用于设置程序执行完毕的时间,并处理wait time,最后创建EventQueuePostProcessor的实例来完成日志信息的输出,后续会有专门的文章对输出进行解释,在这里就不多说了
本文为LoggingSelenium网站原创,[b]本文地址:http://loggingselenium.com/?p=259
.非常感谢分享![/b]
首先,创建一个BufferedWriter实例.
final String resultHtmlFileName = resultsPath + File.separator + "results.html"; System.err.println("resultHtmlFileName=" + resultHtmlFileName); loggingWriter = LoggingUtils.createWriter(resultHtmlFileName, RESULT_FILE_ENCODING, true); |
1. html日志文件的绝对路径,例子为变量代表的路径resultHtmlFileName
2. 日志文件的字符集编码,例子中为变量RESULT_FILE_ENCODING指定的字符集。
3. 布尔值,true表示如存在同名结果文件则覆盖。
接着,创建一个HtmlResultFormatter实例.
LoggingResultsFormatter htmlFormatter = new HtmlResultFormatter(loggingWriter, RESULT_FILE_ENCODING); // 用于链接到截图文件夹 htmlFormatter.setScreenShotBaseUri(SCREENSHOT_PATH + "/"); htmlFormatter.setAutomaticScreenshotPath(screenshotsResultsPath); |
1. BufferedWriter,在上文中已经创建
2. 日志文件的字符集编码,和上文中的编码一致。
创建实例完毕后,需要调用的方法设置更多信息:
1. setScreenShotBaseUri()方法,为截图设置URI
2. setAutomaticScreenshotPath()为自动截图设置图片保存路径
然后,创建一个LoggingCommandProcessor实例。
HttpCommandProcessor processor=new HttpCommandProcessor("127.0.0.1", 4444,"*firefox", "http://loggingselenium.com/"); LoggingCommandProcessor myProcessor =new LoggingCommandProcessor(processor, htmlFormatter); |
LoggingResultsFormatter myFormatter)。
本例中使用的第一个,需要为其提供的参数为:
HttpCommandProcessor对象,需要为该对象提供参数,Selenium Server运行信息、待测应用的URl等
LoggingResultsFormatter,在上文中已经创建,即变量htmlFormatter。
在初始化LoggingCommandProcessor时,其他值得一提的实例是:
public final TestMetricsBean seleniumTestMetrics = new TestMetricsBean();
用于收集Selenium Server版本信息、执行环境信息、执行命令的数目等。
List<LoggingBean> loggingEventsQueue = new ArrayList<LoggingBean>();
用于保存LoggingBean信息的列表,用于收集执行过程中的执行日志信息,包括命令名称、参数、执行结果、起止时间、相关的调用信息等等。
最后,创建一个LoggingDefaultSelenium实例。
LoggingDefaultSelenium类继承DefaultSelenium类,并实现了接口LoggingSelenium。
selenium = new LoggingDefaultSelenium(myProcessor); System.out.println("正在启动Selenium。。。"); selenium.start(); selenium.windowMaximize(); |
准备构造工作已经完成,下面来看看是如何收集具体日志信息的。
先看看start()方法:
LoggingDefaultSelenium继承父类DefaultSelenium的start()方法,执行时进一步调用LoggingCommandProcessor的start()方法,该方法调用HttpCommandProcessor的start()方法完成Selenium的启动,然后为TestMetricsBean实例设置程序开始时间,并调用logExecutionEnvironment(),为TestMetricsBean实例提供更多信息。
再看看open()等具体的执行业务的方法:
LoggingDefaultSelenium继承父类DefaultSelenium的open()方法,执行时进一步调用LoggingCommandProcessor的public String doCommand(String commandName, String[] args) ()方法。该方法调用HttpCommandProcessor的doCommand()方法完成命令操作,收集日志信息。继续以open()方法为例,为TestMetricsBean实例中的命令数目增加1,并调用void
doLogging(String commandName, String[] args, String result, long cmdStartMillis) 方法收集所运行的命令信息,保存在List<LoggingBean> loggingEventsQueue,供后续调用。
最后,来看看stop()方法:
LoggingDefaultSelenium继承父类DefaultSelenium的open()方法,执行时进一步调用LoggingCommandProcessor的stop()方法。该方法调用seleniumTestFinished()用于设置程序执行完毕的时间,并处理wait time,最后创建EventQueuePostProcessor的实例来完成日志信息的输出,后续会有专门的文章对输出进行解释,在这里就不多说了
本文为LoggingSelenium网站原创,[b]本文地址:http://loggingselenium.com/?p=259
.非常感谢分享![/b]
相关文章推荐
- rsyslog, logstash如何结合收集处理日志信息
- 使用commons-logging记录日志信息
- 如何覆盖PB的系统函数 比如Messagebox 以记录Messagebox错误日志 或者实现MESSAGEBOX信息的翻译
- 如何 找出未收集统计信息,以及统计信息过期的表
- 从一个SQL使用了不理想的执行计划说开,浅谈执行计划如何估算cache信息的影响及系统统计信息的收集等(2010-10-15)
- 如何收集DS4K的错误日志
- 如何收集Oracle进程中的sql跟踪信息
- 如何报告Bug,常用信息的收集,方法等
- 如何减少Jboss控制台和日志的信息输出 4.2版
- 忆龙2009:如何快速收集iMC的全部日志
- 数据库交易记录--如何添加审计信息到闪回归档数据以替换操作日志表
- [转]HijackThis 日志分析—如何识别有害信息
- _disable_logging如何禁止日志的生成
- 如何收集及删除列的统计信息
- 如何 找出未收集统计信息,以及统计信息过期的表
- 如何在ASP.NET中将日志信息输出到IIS Log
- 如何使用java.util.logging中的Logger来记录日志
- DB2中如何确定某个表的统计信息的收集时间
- 如何收集统计信息
- HP服务器收集日志信息