You can achieve this more easily by EventFiringWebDriver
EventFiringWebDriver is a wrapper around an arbitrary WebDriver instance which supports registering of a WebDriverEventListener, e.g. for logging purposes.
WebDriver driver = new FirefoxDriver();
//create an object of EventFiringWebDriver and pass the driver instance
EventFiringWebDriver wd = new EventFiringWebDriver(driver);
//create an object of class WebDriverListener and pass the driver instance
WebDriverListener eventListener = new WebDriverListener(driver);
wd.register(eventListener);
Create a WebDriverListener class by implementing WebDriverEventListener interface
It has many methods like beforeClickOn
, afterClickOn
, beforeNavigateTo
, afterNavigateTo
, beforeFindBy
, afterFindBy
.These methods will automatically be called after respective actions ex : beforeFindBy
and afterFindBy
are called automatically before and after finding an element
String title=""; //initially keep title empty
//will automatically be called after click on an element
public void afterClickOn(WebElement element, WebDriver driver) {
//title is not equal to previous page title
if(driver.getTitle()!=title){
//take screenshot
//assign the current title to string title
title=driver.getTitle();
}
}
similarly you can override other methods specified above also for checking the title like afterNavigateTo and take screenshot when title of the page changes.
Hope this helps you...Kindly get back if you need any further help