package raw.selenium;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.internal.WrapsElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.events.AbstractWebDriverEventListener;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class EventFiringWebDriverDemo {
private EventFiringWebDriver efd = null;
@Test
public void testMethod() {
WebElement element = efd.findElement(By.name("note"));
//The below 4 lines which relies on Action doesnot trigger events
Actions action = new Actions(efd.getWrappedDriver());
WrapsElement wrappedElement = (WrapsElement)element;
action.sendKeys(wrappedElement.getWrappedElement(), "Hello world").build().perform();
//However the below line which uses the regular way of clicking does work
element.sendKeys("Hello world");
}
@BeforeClass
public void beforeClass() throws MalformedURLException {
DesiredCapabilities dc = new DesiredCapabilities();
dc.setBrowserName(DesiredCapabilities.firefox().getBrowserName());
RemoteWebDriver rwd = new RemoteWebDriver(url, dc);
efd = new EventFiringWebDriver(rwd);
efd.register(new MyEventListener());
}
@AfterClass
public void afterClass() {
efd.quit();
}
public static class MyEventListener extends AbstractWebDriverEventListener {
@Override
public void afterChangeValueOf(WebElement element, WebDriver driver) {
super.afterChangeValueOf(element, driver);
System.out.println("afterChangeValueOf was invoked");
}
}
}