最近在研究Selenium WebDriver代码,希望可以开发出一个针对WebDriver的类似LoggingSelenium 1.X的日志结果框架。
现在有了一点进步,先分享出来,等完成自己的日志框架之后,再着手建立开源、免费项目。
WebDriver的浏览器的几个实现比如InternetExplorerDriver,FirefoxDriver等都继承RemoteWebDriver类,
其中的 protected Response execute(String driverCommand, Map<String, ?> parameters)方法是执行所有的命令的
必经执行入口。如果想收集执行命令信息和相应参数,就需要对该方法进行额外的小处理。本文以IE浏览器为例,首先
创建一个LoggingInternetExplorerDriver,它继承InternetExplorerDriver,并重写protected Response execute(String driverCommand, Map<String, ?> parameters)方法,
增加对执行命令和参数的处理,本文只简单的打印出命令及其参数。
LoggingInternetExplorerDriver代码例子:
packageorg.openqa.selenium.ie;importjava.util.Map;importjava.util.Map.Entry; importorg.openqa.selenium.remote.DesiredCapabilities;importorg.openqa.selenium.remote.Response;publicclassLoggingInternetExplorerDriverextendsInternetExplorerDriver{publicLoggingInternetExplorerDriver(DesiredCapabilities ieCapabilities){super(ieCapabilities);}protectedResponse execute(StringdriverCommand, Map<String,?>parameters){Response s=null;System.err.print("\n正在执行的命令为:driverCommand="+driverCommand+" 所使用的参数为parameters=");for(Entry<String,?>key:parameters.entrySet()){System.out.print(key.getKey()+"="+key.getValue()+"; ");} try{s=super.execute(driverCommand, parameters);}catch(Exceptione){e.printStackTrace();}returns; }} |
编写测试代码的例子,需要注意的是,我们使用的是LoggingInternetExplorerDriver,而不是InternetExplorerDriver。