@Override
 public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) {
   Log.debug(
       "Searching for web element has been finished. Locator is "
           + arg0.toString()
           + ". "
           + elementDescription(arg1));
 }
 @Override
 public void beforeWebDriverSetTimeOut(
     WebDriver driver, Timeouts timeouts, long timeOut, TimeUnit timeUnit) {
   Log.debug(
       "Attempt to set time out. Value is "
           + Long.toString(timeOut)
           + " time unit is "
           + timeUnit.toString());
 }
 private String addToDescription(WebElement element, String attribute, String description) {
   try {
     if (element.getAttribute(attribute) == null) {
       return description;
     }
     if (element.getAttribute(attribute).equals("")) {
       return description;
     }
     description += " " + attribute + ": " + String.valueOf(element.getAttribute(attribute));
   } catch (Exception e) {
     Log.debug("Location is not supported by attribute '" + attribute + "'...");
   }
   return description;
 }
 @Override
 public void onException(Throwable arg0, WebDriver arg1) {
   Log.debug("An exception has been caught out.", arg0);
 }
 @Override
 public void beforeScript(String arg0, WebDriver arg1) {
   Log.debug("Javascript execution has been started " + arg0);
 }
 @Override
 public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) {
   Log.debug("Searching for element by locator " + arg0.toString() + " has been started");
 }
 @Override
 public void afterScript(String arg0, WebDriver arg1) {
   Log.debug("Javascript  " + arg0 + " has been executed successfully!");
 }