# How implement event listener?

**URL:** <https://forum.katalon.com/t/how-implement-event-listener/9030>\
**Category:** Web Testing\
**Tags:** katalon-studio\
**Created:** [January 24, 2018, 2:05pm UTC](https://forum.katalon.com/t/how-implement-event-listener/9030 "2018-01-24T14:05:36Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Edita\_Markauskaite](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/edita_markauskaite/32/2770_2.png) [@Edita\_Markauskaite](https://forum.katalon.com/u/Edita_Markauskaite)\
**Post date:** [January 24, 2018, 2:05pm UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/1 "2018-01-24T14:05:36Z")

</div>

Hi,  
Does anyone knows how to use and implement AbstractWebDriverEventListener or smth like this? I want to make that after every click will check if there is no errors in console.  
So the best way I can find out is event listener. But I do not find how to use it. I even can`t create class only keyword.  
PLEASE, HELP

---

<div class="post-metadata">

**Author:** ![B\_L](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/b_l/32/976_2.png) [@B\_L](https://forum.katalon.com/u/B_L)\
**Post date:** [January 24, 2018, 7:35pm UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/2 "2018-01-24T19:35:47Z")

</div>

May I ask what is your end goal? What sort of errors are you checking for and if they occur what are you wanting to happen?

---

<div class="post-metadata">

**Author:** ![B\_L](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/b_l/32/976_2.png) [@B\_L](https://forum.katalon.com/u/B_L)\
**Post date:** [January 25, 2018, 1:11pm UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/3 "2018-01-25T13:11:08Z")

</div>

.

---

<div class="post-metadata">

**Author:** ![Zarashima](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/zarashima/32/928_2.png) [@Zarashima](https://forum.katalon.com/u/Zarashima)\
**Post date:** [January 25, 2018, 4:06pm UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/4 "2018-01-25T16:06:07Z")

</div>

> [Edita Markauskaitė](https://forum.katalon.com/profile/3217/Edita%20Markauskait%C4%97 "Link: /profile/3217/Edita%20Markauskait%C4%97") said:
> 
> Hi,  
> Does anyone knows how to use and implement AbstractWebDriverEventListener or smth like this? I want to make that after every click will check if there is no errors in console.  
> So the best way I can find out is event listener. But I do not find how to use it. I even can`t create class only keyword.  
> PLEASE, HELP

Can I ask where do you get this ‘AbstractWebDriverEventListener’? Currently this listener is not supported directly in Katalon Studio, so I can’t give solutions for this question 🙂

---

<div class="post-metadata">

**Author:** ![Edita\_Markauskaite](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/edita_markauskaite/32/2770_2.png) [@Edita\_Markauskaite](https://forum.katalon.com/u/Edita_Markauskaite)\
**Post date:** [January 29, 2018, 9:16am UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/5 "2018-01-29T09:16:04Z")

</div>

I found it on Selenium. My goal is to call my custom function after every click.

---

<div class="post-metadata">

**Author:** ![Zarashima](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/zarashima/32/928_2.png) [@Zarashima](https://forum.katalon.com/u/Zarashima)\
**Post date:** [January 29, 2018, 11:20am UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/6 "2018-01-29T11:20:21Z")

</div>

> [Edita Markauskaitė](https://forum.katalon.com/profile/3217/Edita%20Markauskait%C4%97) said:
> 
> I found it on Selenium. My goal is to call my custom function after every click.

So it’s not applicable in Katalon Studio because Katalon Studio doesn’t support this Test Listener 🙂

---

<div class="post-metadata">

**Author:** ![Edita\_Markauskaite](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/edita_markauskaite/32/2770_2.png) [@Edita\_Markauskaite](https://forum.katalon.com/u/Edita_Markauskaite)\
**Post date:** [January 29, 2018, 1:05pm UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/7 "2018-01-29T13:05:23Z")

</div>

Maybe there is other listener which can help me? Or some other way?

---

<div class="post-metadata">

**Author:** ![Edita\_Markauskaite](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/edita_markauskaite/32/2770_2.png) [@Edita\_Markauskaite](https://forum.katalon.com/u/Edita_Markauskaite)\
**Post date:** [January 31, 2018, 9:34am UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/8 "2018-01-31T09:34:28Z")

</div>

Anyone can help me?

---

<div class="post-metadata">

**Author:** ![Ste\_Duong](https://avatars.discourse-cdn.com/v4/letter/s/4491bb/32.png) [@Ste\_Duong](https://forum.katalon.com/u/Ste_Duong)\
**Post date:** [November 22, 2018, 7:57am UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/9 "2018-11-22T07:57:46Z")

</div>

I have the same interests with Edita Markauskaitė. Is there any way to put more annotation in event listener?

---

<div class="post-metadata">

**Author:** ![Drunda\_Nibel](https://avatars.discourse-cdn.com/v4/letter/d/bb73d2/32.png) [@Drunda\_Nibel](https://forum.katalon.com/u/Drunda_Nibel)\
**Post date:** [November 22, 2018, 9:29am UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/10 "2018-11-22T09:29:49Z")

</div>

I could imagine that it is possible to implement this Selenium method AbstractWebDriverEventListener with your own code by using your own WebDriver according to [this guide](https://docs.katalon.com/katalon-studio/tutorials/using_selenium_webdriver_katalon_studio.html). If you make any progress in this matter, I would be very interested in your approach.

---

<div class="post-metadata">

**Author:** ![kazurayam](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/kazurayam/32/333_2.png) [@kazurayam](https://forum.katalon.com/u/kazurayam)\
**Post date:** [November 23, 2018, 7:07am UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/11 "2018-11-23T07:07:21Z")

</div>

I tried what Drunda mentioned but got no success.

See my project on Github

- [https://github.com/kazurayam/KatalonDiscussion4851](https://github.com/kazurayam/KatalonDiscussion4851)

I made a test case:

```auto
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import org.openqa.selenium.WebDriverimport org.openqa.selenium.WebElementimport org.openqa.selenium.chrome.ChromeDriverimport org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.support.events.AbstractWebDriverEventListenerimport org.openqa.selenium.support.events.EventFiringWebDriver
import com.kms.katalon.core.driver.DriverTypeimport com.kms.katalon.core.webui.driver.DriverFactory
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
/**
 * copied from https://www.seleniumeasy.com/selenium-tutorials/webdriver-event-listener-example
 */
class WebEventListener extends AbstractWebDriverEventListener {
	public void beforeClickOn(WebElement element, WebDriver driver) {
		System.out.println("Trying to click on: " + element.toString());
	}
	public void afterClickOn(WebElement element, WebDriver driver) {
		System.out.println("Clicked on: " + element.toString());
	}
}
WebDriver createWebDriver() {
	DriverType dt = DriverFactory.getExecutedBrowser()
	WebUI.comment("executed browser is ${dt.getName()}")
	WebDriver driver = null
	switch (dt.getName()) {
		case 'FIREFOX_DRIVER':
			System.setProperty('webdriver.gecko.driver', DriverFactory.getGeckoDriverPath())
			driver = new FirefoxDriver()
			break;
		case 'CHROME_DRIVER':
			System.setProperty('webdriver.chrome.driver', DriverFactory.getChromeDriverPath())
			driver = new ChromeDriver()
			break;
	}
	return driver
}
// create WebDriver which can fire events
WebDriver driver = createWebDriver()
EventFiringWebDriver e_driver = new EventFiringWebDriver(driver)
e_driver.register(new WebEventListener())
// let Katalon to use the event-firing WebDriverDriverFactory.changeWebDriver(e_driver)
WebUI.navigateToUrl('https://katalon-demo-cura.herokuapp.com/')
WebUI.verifyElementPresent(findTestObject('Object Repository/Page_CURA Healthcare Service/a_Make Appointment'), 10)
WebUI.click(findTestObject('Object Repository/Page_CURA Healthcare Service/a_Make Appointment'))
WebUI.closeBrowser()

```

I got the flowing error:

```auto
11-23-2018 03:54:10 PM - [ERROR] - Test Cases/TC1 FAILED because (of) (Stack trace:
    java.lang.ClassCastException: org.openqa.selenium.support.events.EventFiringWebDriver cannot be cast to org.openqa.selenium.remote.RemoteWebDriver	at
 com.kms.katalon.core.webui.driver.DriverFactory.logBrowserRunData(DriverFactory.java:477)	at
 com.kms.katalon.core.webui.driver.DriverFactory.changeWebDriver(DriverFactory.java:192)	at 
 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)	at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at
 java.lang.reflect.Method.invoke(Method.java:498)	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)	at
 org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:151)	at
 org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:91)	at
 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)	at
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)	at
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)	at
 Script1542945386835.run(Script1542945386835.groovy:50)	...)

```

It is failing at

```auto
    DriverFactory.changeWebDriver(e_driver)

```

DriverFactory.changeWebDriver() method requires a RemoteWebDriver object as argument, but I passed an EventFiringWebDriver object; mismatching type. Therefore failed.

If DriverFactory.changeWebDriver() method were designed to accept a org.openqa.selenium.WebDriver object, then it would have been fine. But it is not designed so.

# Conclusion

I think we can not use EventFiringWebDriver object in Katalon Studio.

---

<div class="post-metadata">

**Author:** ![devalex88](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/devalex88/32/336_2.png) [@devalex88](https://forum.katalon.com/u/devalex88)\
**Post date:** [September 14, 2019, 2:36pm UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/12 "2019-09-14T14:36:10Z")

</div>

> **[WebDriver Event Listeners](https://docs.katalon.com/katalon-studio/docs/webdriver-event-listeners.html)**
>
> Starting in Katalon Studio version 7.0, the Katalon Studio's WebDriver extends the EventFiringWebDriver. You can use WebDriverEventListener to handle events triggered by the WebDriver, which happens before or after navigation;...

Beta builds will be available next week.

---

<div class="post-metadata">

**Author:** ![Russ\_Thomas](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/russ_thomas/32/11884_2.png) [@Russ\_Thomas](https://forum.katalon.com/u/Russ_Thomas)\
**Post date:** [September 14, 2019, 6:46pm UTC](https://forum.katalon.com/t/how-implement-event-listener/9030/13 "2019-09-14T18:46:11Z")

</div>

That’s gold for some people, Alex. Deserves its own Topic.

> [@WebDriver Listeners and Hooks due in Katalon Studio 7](http://forum.katalon.com/t/webdriver-listeners-and-hooks-due-in-katalon-studio-7/33098):
>
> According to @devalex88, v7 beta releases will arrive next week (week beginning Sep 16/2019). [https://docs.katalon.com/katalon-studio/docs/webdriver-event-listeners.html](https://docs.katalon.com/katalon-studio/docs/webdriver-event-listeners.html)
