5.11.1 在C#中使用EventFiringWebDriver
在C#中,可以通过下面的方式来实例化EventFiringWebDriver对象。
IWebDriver driver = new FirefoxDriver();
OpenQA.Selenium.Support.Events.EventFiringWebDriver eventDriver = new OpenQA.Selenium.Support.Events.EventFiringWebDriver(driver);
可以看到,首先需要创建一个常规的WebDriver实例,然后创建EventFiring WebDriver实例,并将常规的WebDriver实例作为参数传入到EventFiringWebDriver的构造函数中。
在IDE中查看EventFiringWebDriver实例的成员,可以看到,与常规的WebDriver实例相比,它多一些事件,如图5-71所示。
图5-71 EventFiringWebDriver事件
这些事件的功能如下。
Navigating:导航前事件,定义页面在发生跳转前需要执行的代码。
Navigated:导航后事件,定义页面在发生跳转后需要执行的代码。
NavigatingBack:浏览器后退前事件,定义浏览器在执行后退操作前需要执行的代码。
NavigatedBack:浏览器后退后事件,定义浏览器在执行后退操作后需要执行的代码。
NavigatingForward:浏览器前进前事件,定义浏览器在执行前进操作前需要执行的代码。
NavigatedForward:浏览器前进后事件,定义浏览器在执行前进操作后需要执行的代码。
FindingElement:查找元素前事件,定义Selenium在查找元素前需要执行的代码。
FindElementCompleted:找到元素后事件,定义Selenium在找到元素后需要执行的代码。
ElementClicking:单击元素前事件,定义Selenium在单击元素前需要执行的代码。
ElementClicked:单击元素后事件,定义Selenium在单击元素后需要执行的代码。
ElementValueChanging:元素值变更前事件,定义Selenium更改元素的值前需要执行的代码。
ElementValueChanged:元素值变更后事件,定义Selenium更改元素的值后需要执行的代码。
ScriptExecuting:脚本执行前事件,定义脚本执行前需要执行的代码。
ScriptExecuted:脚本执行后事件,定义脚本执行后需要执行的代码。
ExceptionThrown:异常事件,定义在使用Selenium测试发生异常时需要执行的代码。
活用这些事件,就可以实现之前提到的自定义处理。
假设现在要执行以下操作: 打开百度页面,在搜索文本框中输入Selenium,单击搜索,然后人为地产生一个异常。
而这些操作都要触发之前提到的一些自定义处理:
(1)在执行打开网页的的操作时,需要分别记录打开前和打开后的URL地址。
(2)在查找某个页面元素时,查找之前和之后都需要记录查找条件。
(3)在对页面元素进行单击操作时,单击前需要记录元素的查找条件,单击后记录URL地址。
(4)在对页面元素的值进行更改时,需要分别记录更改前的值和更改后的值。
(5)在发生异常的时候,需要进行截图,将截图文件保存至D:\,并以当前日期命名。