Skip to content

Eventlistener

eventlistener

module providing event firing and listening - simple sample event listener based on abstract template class of the Selenium project including not covered standard functions

SimpleEventListener(loggername: Optional[str] = None, events_include_list: list[str] = [], events_exclude_list: list[str] = [], events_generic_list: list[str] = [])

SimpleEventListener - sample event listener implementation (including extended events) with event logging

Source code in src/utils_seleniumxp/eventlistener.py
def __init__(
    self,
    loggername: Optional[str] = None,
    events_include_list: list[str] = [],
    events_exclude_list: list[str] = [],
    events_generic_list: list[str] = []
):

    class EventLoggerFilter_PyCharm_debug_exceptions(logging.Filter):

        # filter function - however, internal on-exceptions from debug mode are not properly captured
        def filter(self, record):
            # https://stackoverflow.com/questions/38634988/check-if-program-runs-in-debug-mode
            debugmode = getattr(sys, 'gettrace', None)() is not None
            attriberror = "AttributeError" in record.msg
            internalattrib = (
                    "no attribute '__'" in record.msg or
                    "no attribute 'shape'" in record.msg or
                    "no attribute '_ipython_canary_method" in record.msg
            )
            return not (debugmode and attriberror and internalattrib)

    super().__init__(events_include_list, events_exclude_list, events_generic_list)

    if loggername is None:
        loggername = "Log_SeleniumEvents"
    self._eventlogger = Utils.initLogger(loggername)

after_alerthandler(mode, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_alerthandler(self, mode, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' mode '{mode}'")

after_change_value_of(element, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_change_value_of(self, element, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' {element} (tagname '{element.tag_name}')")

after_click(element, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_click(self, element, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' of {element} (tagname '{element.tag_name}')")

after_close(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_close(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

after_closepopuphandler(mode, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_closepopuphandler(self, mode, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' mode '{mode}'")

after_cookiemanager(mode, cookiekey, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_cookiemanager(self, mode, cookiekey, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' mode '{mode}'")

after_execute_script(script, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_execute_script(self, script, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' '{script}'")

after_find(by, value, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_find(self, by, value, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' for {{by='{by}', value='{value}'}}")

after_navigate_back(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_navigate_back(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

after_navigate_forward(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_navigate_forward(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

after_navigate_to(url, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_navigate_to(self, url, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' URL '{url}'")

after_quit(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_quit(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

after_refresh(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_refresh(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

after_request(method, url, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_request(self, method, url, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' method '{method}' for URL '{url}'")

after_start_session(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_start_session(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

after_submit(element, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_submit(self, element, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' of {element}")

after_switch_to(objtyp, value, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def after_switch_to(self, objtyp, value, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' {objtyp} with identifier '{value}'")

before_alerthandler(mode, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_alerthandler(self, mode, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' mode '{mode}'")

before_change_value_of(element, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_change_value_of(self, element, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' {element} (tagname '{element.tag_name}')")

before_click(element, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_click(self, element, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' of {element} (tagname '{element.tag_name}')")

before_close(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_close(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

before_closepopuphandler(mode, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_closepopuphandler(self, mode, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' mode '{mode}'")

before_cookiemanager(mode, cookiekey, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_cookiemanager(self, mode, cookiekey, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        if mode == "add":
            self._eventlogger.info(f"event '{event_name}' mode '{mode}' for cookie-key(s) '{cookiekey.keys()}'")
        else:
            if cookiekey != 'all':
                self._eventlogger.info(f"event '{event_name}' mode '{mode}' for cookie-key '{cookiekey}'")
            else:
                self._eventlogger.info(f"event '{event_name}' mode '{mode}' for all cookies")

before_execute_script(script, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_execute_script(self, script, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' '{script}'")

before_find(by, value, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_find(self, by, value, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' for {{by='{by}', value='{value}'}}")

before_navigate_back(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_navigate_back(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

before_navigate_forward(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_navigate_forward(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

before_navigate_to(url, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_navigate_to(self, url, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' URL '{url}'")

before_quit(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_quit(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

before_refresh(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_refresh(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

before_request(method, url, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_request(self, method, url, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' method '{method}' for URL '{url}'")

before_start_session(driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_start_session(self, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}'")

before_submit(element, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_submit(self, element, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' of {element}")

before_switch_to(objtyp, value, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def before_switch_to(self, objtyp, value, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        self._eventlogger.info(f"event '{event_name}' {objtyp} with identifier '{value}'")

generic_listener(event_name: str, *args, **kwargs)

Source code in src/utils_seleniumxp/eventlistener.py
def generic_listener(self, event_name: str, *args, **kwargs):
    if isinstance(event_name, str):
        self._eventlogger.info(f"event '{event_name}'")
    else:
        err_msg = "Call for generic event logging not valid."
        raise Exception(err_msg)

on_exception(exception, driver)

Source code in src/utils_seleniumxp/eventlistener.py
def on_exception(self, exception, driver):
    event_name = self._getmethodname()
    if self.checkevent(event_name):
        exceptionmsg = str(exception).replace("\n", " ")
        self._eventlogger.info(f"event '{event_name}' '{exception.__class__.__name__}', '{exceptionmsg}'")