using System; using OpenQA.Selenium; using OpenQA.Selenium.Firefox; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { IWebDriver driver = new FirefoxDriver(); OpenQA.Selenium.Support.Events.EventFiringWebDriver eventDriver = new OpenQA. Selenium.Support.Events.EventFiringWebDriver(driver); //依次注册事件 eventDriver.Navigating += new EventHandler<OpenQA.Selenium.Support.Events. WebDriverNavigationEventArgs>(eventDriver_Navigating); eventDriver.Navigated += new EventHandler<OpenQA.Selenium.Support.Events. WebDriverNavigationEventArgs>(eventDriver_Navigated); eventDriver.FindingElement += new EventHandler<OpenQA.Selenium.Support.Events. FindElementEventArgs>(eventDriver_FindingElement); eventDriver.FindElementCompleted += new EventHandler<OpenQA.Selenium.Support.Events. FindElementEventArgs>(eventDriver_FindElementCompleted); eventDriver.ElementClicking += new EventHandler<OpenQA.Selenium.Support.Events. WebElementEventArgs>(eventDriver_ElementClicking); eventDriver.ElementClicked += new EventHandler<OpenQA.Selenium.Support.Events. WebElementEventArgs>(eventDriver_ElementClicked); eventDriver.ElementValueChanging += new EventHandler<OpenQA.Selenium.Support.Events. WebElementEventArgs>(eventDriver_ElementValueChanging); eventDriver.ElementValueChanged += new EventHandler<OpenQA.Selenium.Support.Events. WebElementEventArgs>(eventDriver_ElementValueChanged); eventDriver.ExceptionThrown += new EventHandler<OpenQA.Selenium.Support.Events. WebDriverExceptionEventArgs>(eventDriver_ExceptionThrown); //打开百度首页 eventDriver.Navigate().GoToUrl("http://www.baidu.com"); //在搜索框中输入"selenium" eventDriver.FindElement(By.Id("kw")).SendKeys("selenium"); //单击搜索 eventDriver.FindElement(By.Id("su")).Click(); //故意写一个错误操作,使Selenium产生异常 try { eventDriver.FindElement(By.Id("xxxx")); } catch { } Console.ReadKey(); } static void eventDriver_Navigating(object sender, OpenQA.Selenium.Support.Events. WebDriverNavigationEventArgs e) { Console.WriteLine("页面在发生跳转前的Url为:" + e.Driver.Url); } static void eventDriver_Navigated(object sender, OpenQA.Selenium.Support.Events. WebDriverNavigationEventArgs e) { Console.WriteLine("页面在发生跳转后的Url为:" + e.Driver.Url); } static void eventDriver_FindingElement(object sender, OpenQA.Selenium.Support.Events. FindElementEventArgs e) { Console.WriteLine("查找元素时的条件为:" + e.FindMethod.ToString()); } static void eventDriver_FindElementCompleted(object sender, OpenQA.Selenium.Support. Events.FindElementEventArgs e) { Console.WriteLine("找到元素,其条件为:" + e.FindMethod.ToString()); } static void eventDriver_ElementClicking(object sender, OpenQA.Selenium.Support.Events. WebElementEventArgs e) { Console.WriteLine("要单击的页面元素为:" + e.Element.GetAttribute("value")); } static void eventDriver_ElementClicked(object sender, OpenQA.Selenium.Support.Events. WebElementEventArgs e) { System.Threading.Thread.Sleep(4000); Console.WriteLine("单击的页面元素后的Url为:" + e.Driver.Url); } static void eventDriver_ElementValueChanging(object sender, OpenQA.Selenium.Support.Events. WebElementEventArgs e) { Console.WriteLine("更改前的值为:" + e.Element.GetAttribute("value")); } static void eventDriver_ElementValueChanged(object sender, OpenQA.Selenium.Support.Events. WebElementEventArgs e) { Console.WriteLine("更改后的值为:" + e.Element.GetAttribute("value")); } static void eventDriver_ExceptionThrown(object sender, OpenQA.Selenium.Support.Events. WebDriverExceptionEventArgs e) { string path="D:\\" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".png"; (sender as OpenQA.Selenium.Support.Events.EventFiringWebDriver).GetScreenshot(). SaveAsFile(path, System.Drawing.Imaging.ImageFormat.Png); Console.WriteLine("发生异常,原因为:" + e.ThrownException.Message); Console.WriteLine("截图已保存至:" + path); } } } |