TESTEVERYTHING

Sunday 13 November 2016

WebDriver Event Listeners


WebDriver Event Listeners

Selenium WebDriver provides a very good framework for tracking the various events that happen while you're executing your test scripts using WebDriver. Many navigation events that get fi red before and after an event occurs (such as before and after navigating to a URL, before and after browser back-navigation, and so on) can be tracked and captured


How it works?
The Listeners use to listen for the events in the registered webdriver.  It can be any type of event or action. Say, page navigation, element click, changing values in a text field (analogy to javascript onXYZ () series methods) and even exceptions.
To enable this feature,
  1. Create our own user defined Event listener class
  2. Create an EventFiringWebDriverobject by means of webdriver instance,
  3. And register the Listener to the EventFiringWebDriver instance.
How to create your own event listener classes:
You can create a  event listener class in two ways, those are
  • By implementing WebDriverEventListener interface
  • By extending AbstractWebDriverEventListener class


The following fl ow diagram explains what has to be done to capture all of the events
raised by EventFiringWebDriver during the execution of test cases:



like
// Creating webdriver  instance
WebDriver driver = new FirefoxDriver();
// Creating  EventFiringWebDriver instance
EventFiringWebDriver eventFiringWD= new EventFiringWebDriver(driver);
// Creating instance of eventListener, that we just defined
EventListenerCreated EventListenerobj =new EventListenerCreated ();
// Register the Listener with the event firing driver
eventFiringWD.register(EventListenerobj );
eventFiringWD.get("https://www.google.co.in/");
eventFiringWD.findElement(By.className("nosuchclassName"));


Step 1- Create a new Class that will implement WebDriverEventListener methods

package testcases;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.WebDriverEventListener;

public class ActivityCapture implements WebDriverEventListener {
@Override
public void afterChangeValueOf(WebElement arg0, WebDriver arg1) {
}
@Override
public void afterClickOn(WebElement arg0, WebDriver arg1) {
System.out.println("After click "+arg0.toString());
}

@Override
public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) {
System.out.println("After FindBy "+arg0.toString());
}
@Override
public void afterNavigateBack(WebDriver arg0) {
System.out.println("After navigating back "+arg0.toString());
}

@Override
public void afterNavigateForward(WebDriver arg0) {
System.out.println("After navigating forword "+arg0.toString());
}
@Override
public void afterNavigateTo(String arg0, WebDriver arg1) {
System.out.println("After navigating "+arg0.toString());
System.out.println("After navigating "+arg1.toString());
}
@Override
public void afterScript(String arg0, WebDriver arg1) {
}
@Override
public void beforeChangeValueOf(WebElement arg0, WebDriver arg1) {
}
@Override
public void beforeClickOn(WebElement arg0, WebDriver arg1) {
System.out.println("before click "+arg0.toString());
}
@Override
public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) {
System.out.println("before FindBY "+arg0.toString());
}
@Override
public void beforeNavigateBack(WebDriver arg0) {
System.out.println("Before navigating back "+arg0.toString());
}
@Override
public void beforeNavigateForward(WebDriver arg0) {
System.out.println("Before navigating Forword "+arg0.toString());
}
@Override
public void beforeNavigateTo(String arg0, WebDriver arg1) {
System.out.println("Before navigating "+arg0.toString());
System.out.println("Before navigating "+arg1.toString());
}
@Override
public void beforeScript(String arg0, WebDriver arg1) {
}
@Override
public void onException(Throwable arg0, WebDriver arg1) {
System.out.println("Testcase done"+arg0.toString());
System.out.println("Testcase done"+arg1.toString());
}
}
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------


package testcases;

import testcases.ActivityCapture;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.events.EventFiringWebDriver;

public class ListnerDemo {

public static void main(String []args){

System.out.println("Started");

WebDriver driver=new FirefoxDriver();

EventFiringWebDriver event1=new EventFiringWebDriver(driver);

ActivityCapture handle=new ActivityCapture();

event1.register(handle);

event1.navigate().to("http://www.facebook.com");

event1.findElement(By.id("email")).sendKeys("asdsadsa");

event1.findElement(By.id("loginbutton")).click();

event1.quit();

System.out.println("End");
}

}




No comments:

Post a Comment

Which one is right ?

Translate







Tweet