Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions docs/extending/event_firing_webdriver/MyListener.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from robot.api import logger
from selenium.webdriver.support.events import AbstractEventListener


class MyListener(AbstractEventListener):

def before_navigate_to(self, url, driver):
logger.info("Before navigate to %s" % url)

def after_navigate_to(self, url, driver):
logger.info("After navigate to %s" % url)

def before_click(self, element, driver):
logger.info("Before click")

def after_click(self, element, driver):
logger.info("After click")

def before_change_value_of(self, element, driver):
logger.info("Before clear and send_keys")

def after_change_value_of(self, element, driver):
logger.info("After clear and send_keys")
21 changes: 21 additions & 0 deletions docs/extending/event_firing_webdriver/event_firing_webdriver.robot
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
*** Settings ***
Library SeleniumLibrary event_firing_webdriver=${CURDIR}/MyListener.py
Suite Teardown Close All Browsers

*** Variables ***
${URL} https://github.com/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 js-issues-search

Event Firing Webdriver Input Text (WebElement)
Input Text js-issues-search FooBar
18 changes: 18 additions & 0 deletions docs/extending/event_firing_webdriver/readme.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
EventFiringWebDriver
====================

This example demonstrates the EventFiringWenDriver support. The MyListener.py
does only log before and after the Selenium API call. But MyListener.py
could make new Selenium API calls or anything else which is possible from the Python.

To run the example, give command::

robot event_firing_webdriver.robot

From the generated log.html, in the keywords logging, look at logging.
The lines starting "Before " and "After " are from the EventFiringWenDriver.

See `Robot Framework test suite`_ and `EventFiringWebDriver class`_ for further details.

.. _Robot Framework test suite: https://github.com/robotframework/SeleniumLibrary/blob/master/docs/extending/event_firing_webdriver/event_firing_webdriver.robot
.. _EventFiringWebDriver class: https://github.com/robotframework/SeleniumLibrary/blob/master/docs/extending/event_firing_webdriver/MyListener.py
38 changes: 38 additions & 0 deletions docs/extending/extending/decomposition/Decomposition.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from SeleniumLibrary import SeleniumLibrary
from SeleniumLibrary.base import keyword, LibraryComponent
from SeleniumLibrary.keywords import BrowserManagementKeywords


class BrowserKeywords(LibraryComponent):

def __init__(self, ctx):
LibraryComponent.__init__(self, ctx)

@keyword
def open_browser(self, host):
url = 'http://{}.com/'.format(host)
browser_management = BrowserManagementKeywords(self.ctx)
browser_management.open_browser(url, 'chrome')


class DesiredCapabilitiesKeywords(LibraryComponent):

def __init__(self, ctx):
LibraryComponent.__init__(self, ctx)

@keyword
def get_browser_desired_capabilities(self):
self.info('Getting currently open browser desired capabilities')
return self.driver.desired_capabilities


class Decomposition(SeleniumLibrary):

def __init__(self, timeout=5.0, implicit_wait=0.0,
run_on_failure='Capture Page Screenshot',
screenshot_root_directory=None):
SeleniumLibrary.__init__(self, timeout=timeout, implicit_wait=implicit_wait,
run_on_failure=run_on_failure,
screenshot_root_directory=screenshot_root_directory)
self.add_library_components([BrowserKeywords(self),
DesiredCapabilitiesKeywords(self)])
9 changes: 9 additions & 0 deletions docs/extending/extending/decomposition/decomposition.robot
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*** Settings ***
Library ./Decomposition.py

*** Test Cases ***
Decomposition Example
Open Browser google
${capabilities} = Get Browser Desired Capabilities
Log ${capabilities}
[Teardown] Close Browser
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from robot.api import logger
from robot.libraries.BuiltIn import BuiltIn


def open_browser(host):
url = 'http://{}.com/'.format(host)
sl = BuiltIn().get_library_instance('SeleniumLibrary')
sl.open_browser(url, 'chrome')


def get_browser_desired_capabilities():
logger.info('Getting currently open browser desired capabilities')
sl = BuiltIn().get_library_instance('SeleniumLibrary')
return sl.driver.desired_capabilities
10 changes: 10 additions & 0 deletions docs/extending/extending/get_instance/instance.robot
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
*** Settings ***
Library SeleniumLibrary
Library ./GetSeleniumLibraryInstance.py

*** Test Cases ***
Use InheritSeleniumLibrary Open Browser Keyword
GetSeleniumLibraryInstance.Open Browser google
${capabilities} = GetSeleniumLibraryInstance.Get Browser Desired Capabilities
Log ${capabilities}
[Teardown] Close Browser
26 changes: 26 additions & 0 deletions docs/extending/extending/inheritance/InheritSeleniumLibrary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from robot.api import logger
from SeleniumLibrary import SeleniumLibrary
from SeleniumLibrary.base import keyword
from SeleniumLibrary.keywords import BrowserManagementKeywords


class InheritSeleniumLibrary(SeleniumLibrary):

@keyword
def open_browser(self, host):
url = 'http://{}.com/'.format(host)
browser_management = BrowserManagementKeywords(self)
browser_management.open_browser(url, 'chrome')

@keyword
def get_browser_desired_capabilities(self):
logger.info('Getting currently open browser desired capabilities')
return self.driver.desired_capabilities

def not_keywords_but_public_methods(self):
logger.info('Python public method not a keyword, because it is not '
'decorated with @keyword decorator')

def _private_method_are_not_keywords(self):
logger.info('Python private method is not a keyword, because it is not '
'decorated with @keyword decorator')
9 changes: 9 additions & 0 deletions docs/extending/extending/inheritance/inheritance.robot
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*** Settings ***
Library ./InheritSeleniumLibrary.py

*** Test Cases ***
Use InheritSeleniumLibrary Open Browser Keyword
Open Browser google
${capabilities} = Get Browser Desired Capabilities
Log ${capabilities}
[Teardown] Close Browser
Loading