python - How to implement WebDriver Event Listeners in Robot Framework - Stack Overflow

I'm new to Robot Framework. I'm trying to implementWebDriver Event Listeners by importing S

I'm new to Robot Framework. I'm trying to implement WebDriver Event Listeners by importing Selenium Library.

In my Test case, I have this import

Library             SeleniumLibrary    event_firing_webdriver=${CURDIR}/RobotFrameworkListener.py

In RobotFrameworkListener.py file,

    from robot.api import logger
    from selenium.webdriver.support.events import AbstractEventListener
    from robot.libraries.BuiltIn import BuiltIn
    from selenium.webdriver.support.events import EventFiringWebDriver

    selib = BuiltIn().get_library_instance("SeleniumLibrary")
    driver = selib.driver
            
    class RobotFrameworkListener(AbstractEventListener):
         def before_navigate_to(self, url, driver):
             logger.info("URL before navigation: '%s'." % url)
         def after_navigate_to(self, url, driver):
             logger.info("URL after navigation: '%s'." % driver.current_url)
         def before_change_value_of(self, element, driver):
             dict= element.get_property('attributes')
             element_value = dict[2]['value']
             logger.info("Before clearing/entering the text field '%s'." % element_value)
         def after_change_value_of(self, element, driver):
             dict= element.get_property('attributes')
             element_value = dict[2]['value']
             logger.info("After clearing/entering the text field '%s'." % element_value)

So could some one help me on how to trigger listeners for my main Test case so that I can do an action on web driver events like after click, before click, after entering the text etc? Let me know if there is any other way to do it :) Thanks in advance!

I'm new to Robot Framework. I'm trying to implement WebDriver Event Listeners by importing Selenium Library.

In my Test case, I have this import

Library             SeleniumLibrary    event_firing_webdriver=${CURDIR}/RobotFrameworkListener.py

In RobotFrameworkListener.py file,

    from robot.api import logger
    from selenium.webdriver.support.events import AbstractEventListener
    from robot.libraries.BuiltIn import BuiltIn
    from selenium.webdriver.support.events import EventFiringWebDriver

    selib = BuiltIn().get_library_instance("SeleniumLibrary")
    driver = selib.driver
            
    class RobotFrameworkListener(AbstractEventListener):
         def before_navigate_to(self, url, driver):
             logger.info("URL before navigation: '%s'." % url)
         def after_navigate_to(self, url, driver):
             logger.info("URL after navigation: '%s'." % driver.current_url)
         def before_change_value_of(self, element, driver):
             dict= element.get_property('attributes')
             element_value = dict[2]['value']
             logger.info("Before clearing/entering the text field '%s'." % element_value)
         def after_change_value_of(self, element, driver):
             dict= element.get_property('attributes')
             element_value = dict[2]['value']
             logger.info("After clearing/entering the text field '%s'." % element_value)

So could some one help me on how to trigger listeners for my main Test case so that I can do an action on web driver events like after click, before click, after entering the text etc? Let me know if there is any other way to do it :) Thanks in advance!

Share Improve this question asked Mar 12 at 13:16 Bhavya SBhavya S 174 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

I commented some lines in your listener, and it worked:

RobotFrameworkListener.py file:

from robot.api import logger
from selenium.webdriver.support.events import AbstractEventListener
from robot.libraries.BuiltIn import BuiltIn
# from selenium.webdriver.support.events import EventFiringWebDriver

# selib = BuiltIn().get_library_instance("SeleniumLibrary")
# driver = selib.driver
        
class RobotFrameworkListener(AbstractEventListener):
    def before_navigate_to(self, url, driver):
        logger.info("URL before navigation: '%s'." % url)

    def after_navigate_to(self, url, driver):
         logger.info("URL after navigation: '%s'." % driver.current_url)
    
    def before_change_value_of(self, element, driver):
        dict= element.get_property('attributes')
        element_value = dict[2]['value']
        logger.info("Before clearing/entering the text field '%s'." % element_value)
    
    def after_change_value_of(self, element, driver):
        dict= element.get_property('attributes')
        element_value = dict[2]['value']
        logger.info("After clearing/entering the text field '%s'." % element_value)

Test Case:

*** Settings ***
Documentation     This is a test suite to test SO question: https://stackoverflow/questions/79503722/how-to-implement-webdriver-event-listeners-in-robot-framework
Suite Teardown    Close All Browsers
Library           SeleniumLibrary    event_firing_webdriver=${CURDIR}/RobotFrameworkListener.py

*** Variables ***
${URL}            https://github/robotframework/SeleniumLibrary
${ISSUES}         ${URL}/issues
${BROWSER}        Chrome

*** Test Cases ***
Open Browser To Start Page
    Open Browser    ${URL}    ${BROWSER}

Event Firing Webdriver Go To (WebDriver)
    Go To    ${ISSUES}

Event Firing Webdriver Click Element (WebElement)
    Click Element    repository-input

Event Firing Webdriver Input Text (WebElement)
    Input Text    repository-input    FooBar

Listener output in RIDE message window:

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744750197a4591547.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信