Package uk.co.evoco.webdriver
Class WebDriverListener
- java.lang.Object
-
- uk.co.evoco.webdriver.WebDriverListener
-
- All Implemented Interfaces:
org.openqa.selenium.support.events.WebDriverEventListener
public class WebDriverListener extends Object implements org.openqa.selenium.support.events.WebDriverEventListener
This class allows us hooks into before and afters of a lot of WebDriver internals This is a great way to capture screenshots and add conditional waits to actions without making tests and page objects have superfluous code to do these things. We're implementing a core WebDriver interface in WebDriverEventListener here, so the declarations of methods that have no contents is unfortunately necessary. It just means in our world that these "empty" methods do get called, but nothing happens, they just exit.
-
-
Constructor Summary
Constructors Constructor Description WebDriverListener()
-
Method Summary
Modifier and Type Method Description voidafterAlertAccept(org.openqa.selenium.WebDriver webDriver)voidafterAlertDismiss(org.openqa.selenium.WebDriver webDriver)voidafterChangeValueOf(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver, CharSequence[] charSequences)voidafterClickOn(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)voidafterFindBy(org.openqa.selenium.By by, org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)<X> voidafterGetScreenshotAs(org.openqa.selenium.OutputType<X> outputType, X x)voidafterGetText(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver, String s)voidafterNavigateBack(org.openqa.selenium.WebDriver webDriver)voidafterNavigateForward(org.openqa.selenium.WebDriver webDriver)voidafterNavigateRefresh(org.openqa.selenium.WebDriver webDriver)voidafterNavigateTo(String s, org.openqa.selenium.WebDriver webDriver)voidafterScript(String s, org.openqa.selenium.WebDriver webDriver)voidafterSwitchToWindow(String s, org.openqa.selenium.WebDriver webDriver)voidbeforeAlertAccept(org.openqa.selenium.WebDriver webDriver)voidbeforeAlertDismiss(org.openqa.selenium.WebDriver webDriver)voidbeforeChangeValueOf(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver, CharSequence[] charSequences)voidbeforeClickOn(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)Before we interact with any methods (which is anytime we click() on anything) we want to do a state check that the element is actually clickable.voidbeforeFindBy(org.openqa.selenium.By by, org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)Before each webDriver.findBy or @FindBy we want to make sure that we are supply elements that are present in the DOM.<X> voidbeforeGetScreenshotAs(org.openqa.selenium.OutputType<X> outputType)voidbeforeGetText(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)voidbeforeNavigateBack(org.openqa.selenium.WebDriver webDriver)voidbeforeNavigateForward(org.openqa.selenium.WebDriver webDriver)voidbeforeNavigateRefresh(org.openqa.selenium.WebDriver webDriver)voidbeforeNavigateTo(String s, org.openqa.selenium.WebDriver webDriver)voidbeforeScript(String s, org.openqa.selenium.WebDriver webDriver)voidbeforeSwitchToWindow(String s, org.openqa.selenium.WebDriver webDriver)voidonException(Throwable throwable, org.openqa.selenium.WebDriver webDriver)If we have an exception, lets create a screenshot so we can see the page as it happened.voidsetScreenshotDirectory(File screenshotDirectory)Sets the screenshot target directory that will be used for screenshots generated inside onException()
-
-
-
Method Detail
-
setScreenshotDirectory
public void setScreenshotDirectory(File screenshotDirectory)
Sets the screenshot target directory that will be used for screenshots generated inside onException()- Parameters:
screenshotDirectory- the path to the screenshot directory used in onException
-
beforeAlertAccept
public void beforeAlertAccept(org.openqa.selenium.WebDriver webDriver)
- Specified by:
beforeAlertAcceptin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
afterAlertAccept
public void afterAlertAccept(org.openqa.selenium.WebDriver webDriver)
- Specified by:
afterAlertAcceptin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
afterAlertDismiss
public void afterAlertDismiss(org.openqa.selenium.WebDriver webDriver)
- Specified by:
afterAlertDismissin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
beforeAlertDismiss
public void beforeAlertDismiss(org.openqa.selenium.WebDriver webDriver)
- Specified by:
beforeAlertDismissin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
beforeNavigateTo
public void beforeNavigateTo(String s, org.openqa.selenium.WebDriver webDriver)
- Specified by:
beforeNavigateToin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
s- StringwebDriver- active WebDriver instance
-
afterNavigateTo
public void afterNavigateTo(String s, org.openqa.selenium.WebDriver webDriver)
- Specified by:
afterNavigateToin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
s- StringwebDriver- active WebDriver instance
-
beforeNavigateBack
public void beforeNavigateBack(org.openqa.selenium.WebDriver webDriver)
- Specified by:
beforeNavigateBackin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
afterNavigateBack
public void afterNavigateBack(org.openqa.selenium.WebDriver webDriver)
- Specified by:
afterNavigateBackin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
beforeNavigateForward
public void beforeNavigateForward(org.openqa.selenium.WebDriver webDriver)
- Specified by:
beforeNavigateForwardin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
afterNavigateForward
public void afterNavigateForward(org.openqa.selenium.WebDriver webDriver)
- Specified by:
afterNavigateForwardin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
beforeNavigateRefresh
public void beforeNavigateRefresh(org.openqa.selenium.WebDriver webDriver)
- Specified by:
beforeNavigateRefreshin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
afterNavigateRefresh
public void afterNavigateRefresh(org.openqa.selenium.WebDriver webDriver)
- Specified by:
afterNavigateRefreshin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webDriver- active WebDriver instance
-
beforeFindBy
public void beforeFindBy(org.openqa.selenium.By by, org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)Before each webDriver.findBy or @FindBy we want to make sure that we are supply elements that are present in the DOM. This ensures that we avoid, to some degree, StaleElementExceptions (although this is generally not the best way to avoid those types of exceptions).- Specified by:
beforeFindByin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
by- locatorwebElement- active WebElement, already locatedwebDriver- active WebDriver instance
-
afterFindBy
public void afterFindBy(org.openqa.selenium.By by, org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)- Specified by:
afterFindByin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
by- locatorwebElement- active WebElement, already locatedwebDriver- active WebDriver instance
-
beforeClickOn
public void beforeClickOn(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)Before we interact with any methods (which is anytime we click() on anything) we want to do a state check that the element is actually clickable. This ensures that elements that are disabled or not visible are given time (as little as they need) to be ready to be interacted with. A valid case for this is where a button may be disabled until form fields are automatically valid.- Specified by:
beforeClickOnin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webElement- active WebElement, already locatedwebDriver- active WebDriver instance
-
afterClickOn
public void afterClickOn(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)- Specified by:
afterClickOnin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webElement- active WebElement, already locatedwebDriver- active WebDriver instance
-
beforeChangeValueOf
public void beforeChangeValueOf(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver, CharSequence[] charSequences)- Specified by:
beforeChangeValueOfin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webElement- active WebElement, already locatedwebDriver- active WebDriver instancecharSequences- character sequence
-
afterChangeValueOf
public void afterChangeValueOf(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver, CharSequence[] charSequences)- Specified by:
afterChangeValueOfin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webElement- active WebElement, already locatedwebDriver- active WebDriver instancecharSequences- character sequence
-
beforeScript
public void beforeScript(String s, org.openqa.selenium.WebDriver webDriver)
- Specified by:
beforeScriptin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
s- StringwebDriver- active WebDriver instance
-
afterScript
public void afterScript(String s, org.openqa.selenium.WebDriver webDriver)
- Specified by:
afterScriptin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
s- StringwebDriver- active WebDriver instance
-
beforeSwitchToWindow
public void beforeSwitchToWindow(String s, org.openqa.selenium.WebDriver webDriver)
- Specified by:
beforeSwitchToWindowin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
s- StringwebDriver- active WebDriver instance
-
afterSwitchToWindow
public void afterSwitchToWindow(String s, org.openqa.selenium.WebDriver webDriver)
- Specified by:
afterSwitchToWindowin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
s- StringwebDriver- active WebDriver instance
-
onException
public void onException(Throwable throwable, org.openqa.selenium.WebDriver webDriver)
If we have an exception, lets create a screenshot so we can see the page as it happened.- Specified by:
onExceptionin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
throwable- the thrown exception that we are holding herewebDriver- active WebDriver instance
-
beforeGetScreenshotAs
public <X> void beforeGetScreenshotAs(org.openqa.selenium.OutputType<X> outputType)
- Specified by:
beforeGetScreenshotAsin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Type Parameters:
X- x- Parameters:
outputType- output type
-
afterGetScreenshotAs
public <X> void afterGetScreenshotAs(org.openqa.selenium.OutputType<X> outputType, X x)- Specified by:
afterGetScreenshotAsin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Type Parameters:
X- x- Parameters:
outputType- output typex- x
-
beforeGetText
public void beforeGetText(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver)- Specified by:
beforeGetTextin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webElement- active WebElement, already locatedwebDriver- active WebDriver instance
-
afterGetText
public void afterGetText(org.openqa.selenium.WebElement webElement, org.openqa.selenium.WebDriver webDriver, String s)- Specified by:
afterGetTextin interfaceorg.openqa.selenium.support.events.WebDriverEventListener- Parameters:
webElement- active WebElement, already locatedwebDriver- active WebDriver instances- String
-
-