From e39e487e6ffcf54e84c3714f7eda4c99966e6000 Mon Sep 17 00:00:00 2001 From: Kiran Kumar Date: Sat, 28 Apr 2018 09:07:13 +0530 Subject: [PATCH] added support for EventFiringWebDriver --- .../browser/driver/DriverBuilder.java | 29 +++++++++++++++++-- .../driver/builders/ChromeDriverBuilder.java | 2 +- .../driver/builders/EdgeDriverBuilder.java | 2 +- .../driver/builders/FirefoxDriverBuilder.java | 2 +- .../builders/HtmlUnitDriverBuilder.java | 2 +- .../InternetExplorerDriverBuilder.java | 2 +- .../driver/builders/OperaDriverBuilder.java | 2 +- .../builders/PhantomJSDriverBuilder.java | 2 +- 8 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/github/seleniumquery/browser/driver/DriverBuilder.java b/src/main/java/io/github/seleniumquery/browser/driver/DriverBuilder.java index a798c4a9..3c61103a 100644 --- a/src/main/java/io/github/seleniumquery/browser/driver/DriverBuilder.java +++ b/src/main/java/io/github/seleniumquery/browser/driver/DriverBuilder.java @@ -16,12 +16,12 @@ package io.github.seleniumquery.browser.driver; import java.util.function.Consumer; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.DesiredCapabilities; - +import org.openqa.selenium.support.events.EventFiringWebDriver; +import org.openqa.selenium.support.events.WebDriverEventListener; import io.github.bonigarcia.wdm.WebDriverManager; /** @@ -42,6 +42,8 @@ public abstract class DriverBuilder> { private boolean autoQuitAskedFor = false; + private WebDriverEventListener webDriverEventListener; + /** * Configures the driver with the given capabilities. * @param desiredCapabilities The capabilities to be set. @@ -144,4 +146,27 @@ protected void autoQuitDriverIfAskedFor(WebDriver driver) { } } + /** + * Configures the driver with the given WebDriverEventListener. + * + * @param webDriverEventListener The webDriverEventListener to be set. + * @return A self reference for further configuration. + * @since 0.18.0 + */ + @SuppressWarnings("unchecked") + public T withWebDriverEventListener(WebDriverEventListener webDriverEventListener) { + this.webDriverEventListener = webDriverEventListener; + return (T) this; + } + + protected WebDriver attatchEventListner(WebDriver webDriver) { + if (webDriverEventListener != null) { + EventFiringWebDriver efwd = new EventFiringWebDriver(webDriver); + efwd.register(webDriverEventListener); + return efwd; + } else { + return webDriver; + } + } + } diff --git a/src/main/java/io/github/seleniumquery/browser/driver/builders/ChromeDriverBuilder.java b/src/main/java/io/github/seleniumquery/browser/driver/builders/ChromeDriverBuilder.java index d2d86a4a..11828f98 100644 --- a/src/main/java/io/github/seleniumquery/browser/driver/builders/ChromeDriverBuilder.java +++ b/src/main/java/io/github/seleniumquery/browser/driver/builders/ChromeDriverBuilder.java @@ -124,7 +124,7 @@ protected WebDriver build() { autoDownloadDriverIfAskedFor(ChromeDriver.class); WebDriver webDriver = buildChrome(); autoQuitDriverIfAskedFor(webDriver); - return webDriver; + return attatchEventListner(webDriver); } private WebDriver buildChrome() { diff --git a/src/main/java/io/github/seleniumquery/browser/driver/builders/EdgeDriverBuilder.java b/src/main/java/io/github/seleniumquery/browser/driver/builders/EdgeDriverBuilder.java index 25ba3b16..d15810f3 100644 --- a/src/main/java/io/github/seleniumquery/browser/driver/builders/EdgeDriverBuilder.java +++ b/src/main/java/io/github/seleniumquery/browser/driver/builders/EdgeDriverBuilder.java @@ -65,7 +65,7 @@ protected WebDriver build() { autoDownloadDriverIfAskedFor(EdgeDriver.class); WebDriver webDriver = buildEdge(); autoQuitDriverIfAskedFor(webDriver); - return webDriver; + return attatchEventListner(webDriver); } private WebDriver buildEdge() { diff --git a/src/main/java/io/github/seleniumquery/browser/driver/builders/FirefoxDriverBuilder.java b/src/main/java/io/github/seleniumquery/browser/driver/builders/FirefoxDriverBuilder.java index 80b083f7..7b1b109e 100644 --- a/src/main/java/io/github/seleniumquery/browser/driver/builders/FirefoxDriverBuilder.java +++ b/src/main/java/io/github/seleniumquery/browser/driver/builders/FirefoxDriverBuilder.java @@ -126,7 +126,7 @@ protected WebDriver build() { autoDownloadDriverIfAskedFor(FirefoxDriver.class); WebDriver webDriver = buildFirefox(); autoQuitDriverIfAskedFor(webDriver); - return webDriver; + return attatchEventListner(webDriver); } private WebDriver buildFirefox() { diff --git a/src/main/java/io/github/seleniumquery/browser/driver/builders/HtmlUnitDriverBuilder.java b/src/main/java/io/github/seleniumquery/browser/driver/builders/HtmlUnitDriverBuilder.java index 0622a02d..e3ac9918 100644 --- a/src/main/java/io/github/seleniumquery/browser/driver/builders/HtmlUnitDriverBuilder.java +++ b/src/main/java/io/github/seleniumquery/browser/driver/builders/HtmlUnitDriverBuilder.java @@ -104,7 +104,7 @@ public HtmlUnitDriverBuilder emulatingInternetExplorer() { protected WebDriver build() { WebDriver webDriver = buildHtmlUnit(); autoQuitDriverIfAskedFor(webDriver); - return webDriver; + return attatchEventListner(webDriver); } private WebDriver buildHtmlUnit() { diff --git a/src/main/java/io/github/seleniumquery/browser/driver/builders/InternetExplorerDriverBuilder.java b/src/main/java/io/github/seleniumquery/browser/driver/builders/InternetExplorerDriverBuilder.java index 0425dba2..de3a792c 100644 --- a/src/main/java/io/github/seleniumquery/browser/driver/builders/InternetExplorerDriverBuilder.java +++ b/src/main/java/io/github/seleniumquery/browser/driver/builders/InternetExplorerDriverBuilder.java @@ -75,7 +75,7 @@ protected WebDriver build() { autoDownloadDriverIfAskedFor(InternetExplorerDriver.class); WebDriver webDriver = buildIE(); autoQuitDriverIfAskedFor(webDriver); - return webDriver; + return attatchEventListner(webDriver); } private WebDriver buildIE() { diff --git a/src/main/java/io/github/seleniumquery/browser/driver/builders/OperaDriverBuilder.java b/src/main/java/io/github/seleniumquery/browser/driver/builders/OperaDriverBuilder.java index 7565e86e..3979bdd9 100644 --- a/src/main/java/io/github/seleniumquery/browser/driver/builders/OperaDriverBuilder.java +++ b/src/main/java/io/github/seleniumquery/browser/driver/builders/OperaDriverBuilder.java @@ -117,7 +117,7 @@ protected WebDriver build() { autoDownloadDriverIfAskedFor(OperaDriver.class); WebDriver webDriver = buildOpera(); autoQuitDriverIfAskedFor(webDriver); - return webDriver; + return attatchEventListner(webDriver); } private WebDriver buildOpera() { diff --git a/src/main/java/io/github/seleniumquery/browser/driver/builders/PhantomJSDriverBuilder.java b/src/main/java/io/github/seleniumquery/browser/driver/builders/PhantomJSDriverBuilder.java index 9991ea48..c9711c73 100644 --- a/src/main/java/io/github/seleniumquery/browser/driver/builders/PhantomJSDriverBuilder.java +++ b/src/main/java/io/github/seleniumquery/browser/driver/builders/PhantomJSDriverBuilder.java @@ -88,7 +88,7 @@ protected WebDriver build() { autoDownloadDriverIfAskedFor(PhantomJSDriver.class); WebDriver webDriver = buildPhantomJS(); autoQuitDriverIfAskedFor(webDriver); - return webDriver; + return attatchEventListner(webDriver); } private WebDriver buildPhantomJS() {