My code works as far as opening a browser window and browsing to a URL. No errors are caught in my code. I need to handle events generated by the browser, particularly when the user closes the browser window. None of the messages are caught in my OverrideClass.
I have this:
try {
System.setProperty("webdriver.gecko.driver", "./geckodriver.exe");
driver = new FirefoxDriver();
EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
OverrideClass oc = new OverrideClass();
eventDriver.register(oc);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} catch (Exception ex) {
Log.logError("Browser.initBrowser(): " + ex.getLocalizedMessage());
}
The message handler looks like this:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.WebDriverEventListener;
public class OverrideClass implements WebDriverEventListener{
// @Override
// public void afterChangeValueOf(WebElement arg0, WebDriver arg1) {
//
// }
@Override
public void afterClickOn(WebElement arg0, WebDriver arg1) {
System.out.println("OverrideClass.afterClickOn(): " + arg0.toString());
}
@Override
public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) {
System.out.println("OverrideClass.afterFindBy(): " + arg0.toString()); }
@Override
public void afterNavigateBack(WebDriver driver) {
System.out.println("After clicking back "+ driver.getCurrentUrl());
}
@Override
public void afterNavigateForward(WebDriver arg0) {
}
@Override
public void afterNavigateTo(String arg0, WebDriver arg1) {
}
@Override
public void afterScript(String arg0, WebDriver arg1) {
}
// @Override
// public void beforeChangeValueOf(WebElement arg0, WebDriver arg1) {
//
// }
@Override
public void beforeClickOn(WebElement arg0, WebDriver arg1) {
}
@Override
public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) {
}
@Override
public void beforeNavigateBack(WebDriver driver) {
System.out.println("OverrideClass.beforeNavigateBack() Before clicking back: " + driver.getCurrentUrl());
}
@Override
public void beforeNavigateForward(WebDriver arg0) {
System.out.println("OverrideClass.beforeNavigateForward() Before clicking back: " + arg0.getCurrentUrl());
}
@Override
public void beforeNavigateTo(String arg0, WebDriver arg1) {
System.out.println("OverrideClass.beforeNavigateTo(): " + arg0);
}
@Override
public void beforeScript(String arg0, WebDriver arg1) {
}
@Override
public void onException(Throwable arg0, WebDriver arg1) {
System.out.println("OverrideClass.onException(): " + arg0.getLocalizedMessage());
}
@Override
public void afterAlertAccept(WebDriver arg0) {
}
@Override
public void afterAlertDismiss(WebDriver arg0) {
}
@Override
public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence[] arg2) {
}
@Override
public void afterNavigateRefresh(WebDriver arg0) {
}
@Override
public void beforeAlertAccept(WebDriver arg0) {
}
@Override
public void beforeAlertDismiss(WebDriver arg0) {
}
@Override
public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence[] arg2) {
}
@Override
public void beforeNavigateRefresh(WebDriver arg0) {
}
}