WebDriverEventListener is an Interface and AbstractWebDriverEventListener is an abstract class. These are used for logging before an event occurs.They behave similar to the listeners(iTestListener) in TestNG.
It has few custom abstract methods defined under the class/interface.In order to use these listener one has to extend AbstractWebDriverEventListener or implement WebDriverEventListener and the custom class has to override the below methods.
Tests have been defined in a separate class 'TestWebdriverListener' which adds the event and triggers the logging process.
It has few custom abstract methods defined under the class/interface.In order to use these listener one has to extend AbstractWebDriverEventListener or implement WebDriverEventListener and the custom class has to override the below methods.
Sample Implementation
I have created an custom webdriver logger class ("WebdriverLogger") which implements the webdriver event listener interface and overrides all methods under it.Find the Sample Page below:WebdriverLogger.class
public class WebdriverLogger implements WebDriverEventListener{ @Override public void beforeNavigateBack(WebDriver arg1){ System.out.println("beforeNavigateBack"); } @Override public void afterNavigateBack(WebDriver arg1){ System.out.println("afterNavigateBack"); } @Override public void afterScript(String arg0, WebDriver arg1){ //-Add Code } @Override public void beforeScript(String arg0, WebDriver arg1){ } @Override public void beforeFindBy(By arg0, WebElement arg1 , WebDriver arg2){ } @Override public void afterFindBy(By arg0, WebElement arg1 , WebDriver arg2){ } @Override public void beforeClickOn(WebElement arg1 , WebDriver arg2){ System.out.println("beforeClickOn"); } @Override public void afterClickOn(WebElement arg1 , WebDriver arg2){ System.out.println("afterClickOn"); } @Override public void beforeNavigateForward(WebDriver arg2){ } @Override public void afterNavigateForward(WebDriver arg2){ } @Override public void beforeNavigateTo(String url, WebDriver arg2){ System.out.println("beforeNavigateTo"); } @Override public void afterNavigateTo(String url, WebDriver arg2){ System.out.println("afterNavigateTo"); } @Override public void afterChangeValueOf(WebElement arg0, WebDriver arg1){ } @Override public void beforeChangeValueOf(WebElement arg0, WebDriver arg1){ } @Override public void onException(Throwable t, WebDriver arg1){ System.out.println("Exception Caught"+t.getMessage()); } }
Tests have been defined in a separate class 'TestWebdriverListener' which adds the event and triggers the logging process.
TestWebdriverListener.java
public class TestWebdriverListener { private static WebDriver driver; private static EventFiringWebDriver edriver; @BeforeMethod public static void setUp(){ driver=new ChromeDriver(); edriver=new EventFiringWebDriver(driver); edriver.register(new WebdriverLogger()); edriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @Test public static void testMobikwik(){ edriver.navigate().to("https://www.mobikwik.com/"); //edriver.findElement(By.xpath("//*[@id='gs_htif0']")).sendKeys("George Bernard Shaw"); edriver.findElement(By.xpath("//ul[@class='user-auth-nav nav-secondary sub-block quarter flushright hud-light']//li[@class='sub-block one-w glued tiny']/a")).click(); } @AfterMethod public static void tearDown(){ edriver.quit(); } }
Sample Output
Starting ChromeDriver (v2.9.248315) on port 45663
beforeNavigateTo
afterNavigateTo
beforeClickOn
afterClickOn
PASSED: testGoogle
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================