def __init__(self): ctx = SeleniumLibrary(screenshot_root_directory='Results') AlertKeywords.__init__(self, ctx) BrowserManagementKeywords.__init__(self, ctx) ElementKeywords.__init__(self, ctx) FormElementKeywords.__init__(self, ctx) ScreenshotKeywords.__init__(self, ctx) SelectElementKeywords.__init__(self, ctx) WaitingKeywords.__init__(self, ctx) self.screenshot_directory = ctx.screenshot_root_directory self.builtIn = CRFBuiltIn()
def __init__(self, timeout=5.0, implicit_wait=0.0, run_on_failure='Capture Page Screenshot', screenshot_root_directory=None): """SeleniumLibrary can be imported with optional arguments. `timeout` is the default timeout used to wait for all waiting actions. It can be later set with `Set Selenium Timeout`. 'implicit_wait' is the implicit timeout that Selenium waits when looking for elements. It can be later set with `Set Selenium Implicit Wait`. See `WebDriver: Advanced Usage`__ section of the SeleniumHQ documentation for more information about WebDriver's implicit wait functionality. __ http://seleniumhq.org/docs/04_webdriver_advanced.html#explicit-and-implicit-waits `run_on_failure` specifies the name of a keyword (from any available libraries) to execute when a SeleniumLibrary keyword fails. By default `Capture Page Screenshot` will be used to take a screenshot of the current page. Using the value "Nothing" will disable this feature altogether. See `Register Keyword To Run On Failure` keyword for more information about this functionality. `screenshot_root_directory` specifies the default root directory that screenshots should be stored in. If not provided the default directory will be where robotframework places its logfile. Examples: | Library `|` SeleniumLibrary `|` 15 | # Sets default timeout to 15 seconds | | Library `|` SeleniumLibrary `|` 0 `|` 5 | # Sets default timeout to 0 seconds and default implicit_wait to 5 seconds | | Library `|` SeleniumLibrary `|` 5 `|` run_on_failure=Log Source | # Sets default timeout to 5 seconds and runs `Log Source` on failure | | Library `|` SeleniumLibrary `|` implicit_wait=5 `|` run_on_failure=Log Source | # Sets default implicit_wait to 5 seconds and runs `Log Source` on failure | | Library `|` SeleniumLibrary `|` timeout=10 `|` run_on_failure=Nothing | # Sets default timeout to 10 seconds and does nothing on failure | """ self.timeout = timestr_to_secs(timeout) self.implicit_wait = timestr_to_secs(implicit_wait) self.speed = 0.0 self.run_on_failure_keyword \ = RunOnFailureKeywords.resolve_keyword(run_on_failure) self._running_on_failure_keyword = False self.screenshot_root_directory = screenshot_root_directory libraries = [ AlertKeywords(self), BrowserManagementKeywords(self), RunOnFailureKeywords(self), ElementKeywords(self), TableElementKeywords(self), FormElementKeywords(self), SelectElementKeywords(self), JavaScriptKeywords(self), CookieKeywords(self), ScreenshotKeywords(self), WaitingKeywords(self) ] self._browsers = BrowserCache() DynamicCore.__init__(self, libraries) self.ROBOT_LIBRARY_LISTENER = LibraryListener() self.element_finder = ElementFinder(self) self._table_element_finder = TableElementFinder(self)
def __init__(self, timeout=5.0, implicit_wait=0.0, run_on_failure='Capture Page Screenshot', screenshot_root_directory=None): self.timeout = timestr_to_secs(timeout) self.implicit_wait = timestr_to_secs(implicit_wait) self.speed = 0.0 self.run_on_failure_keyword \ = RunOnFailureKeywords.resolve_keyword(run_on_failure) self._running_on_failure_keyword = False self.screenshot_root_directory = screenshot_root_directory libraries = [ AlertKeywords(self), BrowserManagementKeywords(self), CookieKeywords(self), ElementKeywords(self), FormElementKeywords(self), FrameKeywords(self), JavaScriptKeywords(self), RunOnFailureKeywords(self), ScreenshotKeywords(self), SelectElementKeywords(self), TableElementKeywords(self), WaitingKeywords(self), WindowKeywords(self), KeyboardKeywords(self) ] self._drivers = WebDriverCache() DynamicCore.__init__(self, libraries) self.ROBOT_LIBRARY_LISTENER = LibraryListener() self._element_finder = ElementFinder(self)
def __init__(self, timeout=5.0, implicit_wait=0.0, run_on_failure='Capture Page Screenshot', screenshot_root_directory=None, plugins=None, event_firing_webdriver=None): """SeleniumLibrary can be imported with several optional arguments. - ``timeout``: Default value for `timeouts` used with ``Wait ...`` keywords. - ``implicit_wait``: Default value for `implicit wait` used when locating elements. - ``run_on_failure``: Default action for the `run-on-failure functionality`. - ``screenshot_root_directory``: Location where possible screenshots are created. If not given, the directory where the log file is written is used. - ``plugins``: Allows extending the SeleniumLibrary with external Python classes. - ``event_firing_webdriver``: Class for wrapping Selenium with [https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.event_firing_webdriver.html#module-selenium.webdriver.support.event_firing_webdriver|EventFiringWebDriver] """ self.timeout = timestr_to_secs(timeout) self.implicit_wait = timestr_to_secs(implicit_wait) self.speed = 0.0 self.run_on_failure_keyword \ = RunOnFailureKeywords.resolve_keyword(run_on_failure) self._running_on_failure_keyword = False self.screenshot_root_directory = screenshot_root_directory self._element_finder = ElementFinder(self) self._plugin_keywords = [] libraries = [ AlertKeywords(self), BrowserManagementKeywords(self), CookieKeywords(self), ElementKeywords(self), FormElementKeywords(self), FrameKeywords(self), JavaScriptKeywords(self), RunOnFailureKeywords(self), ScreenshotKeywords(self), SelectElementKeywords(self), TableElementKeywords(self), WaitingKeywords(self), WindowKeywords(self) ] if is_truthy(plugins): plugin_libs = self._parse_plugins(plugins) libraries = libraries + plugin_libs self._drivers = WebDriverCache() DynamicCore.__init__(self, libraries) self.ROBOT_LIBRARY_LISTENER = LibraryListener() if is_truthy(event_firing_webdriver): self.event_firing_webdriver = self._parse_listener( event_firing_webdriver) else: self.event_firing_webdriver = None self._running_keyword = None
def does_alert_contain(self, text: str = None, timeout: float = None) -> bool: # pylint: disable=W0212 """Does alert contain text. ``text`` check if alert includes text, will raise ValueError is text does not exist Example: | ${res} | Does Alert Contain | alert message | """ alert_keywords = AlertKeywords(self) alert = alert_keywords._wait_alert(timeout) if text in alert.text: return True else: raise ValueError('Alert did not contain text "%s"' % text)
def __init__(self, timeout=5.0, implicit_wait=0.0, run_on_failure='Capture Page Screenshot', screenshot_root_directory=None, demo=False): """SeleniumLibrary can be imported with several optional arguments. - ``timeout``: Default value for `timeouts` used with ``Wait ...`` keywords. - ``implicit_wait``: Default value for `implicit wait` used when locating elements. - ``run_on_failure``: Default action for the `run-on-failure functionality`. - ``screenshot_root_directory``: Location where possible screenshots are created. If not given, the directory where the log file is written is used. - ``Demo`` Flash the element before click, input and etc actions. Set value True if you want it. """ self.timeout = timestr_to_secs(timeout) self.implicit_wait = timestr_to_secs(implicit_wait) self.speed = 0.0 self.run_on_failure_keyword \ = RunOnFailureKeywords.resolve_keyword(run_on_failure) self._running_on_failure_keyword = False self.screenshot_root_directory = screenshot_root_directory self.demo = demo libraries = [ AlertKeywords(self), BrowserManagementKeywords(self), CookieKeywords(self), ElementKeywords(self), FormElementKeywords(self), FrameKeywords(self), JavaScriptKeywords(self), RunOnFailureKeywords(self), ScreenshotKeywords(self), SelectElementKeywords(self), TableElementKeywords(self), WaitingKeywords(self), WindowKeywords(self) ] self._drivers = WebDriverCache() DynamicCore.__init__(self, libraries) self.ROBOT_LIBRARY_LISTENER = LibraryListener() self._element_finder = ElementFinder(self)
def setUpClass(self): self.alert = AlertKeywords(mock())
class KeywordArgumentsAlertTest(unittest.TestCase): @classmethod def setUpClass(self): self.alert = AlertKeywords(mock()) def tearDown(self): unstub() def test_get_alert_message_dismiss_true(self): when(AlertKeywords).handle_alert(DISMISS).thenReturn('text') count = 1 for true in TRUES: self.alert.get_alert_message(true) verify(AlertKeywords, times=count).handle_alert(DISMISS) count += 1 self.alert.get_alert_message() verify(AlertKeywords, times=count).handle_alert(DISMISS) def test_get_alert_message_dismiss_false(self): when(AlertKeywords).handle_alert(LEAVE).thenReturn('text') count = 1 for false in FALSES: self.alert.get_alert_message(false) verify(AlertKeywords, times=count).handle_alert(LEAVE) count += 1 def test_dismiss_alert_true(self): when(AlertKeywords).handle_alert(ACCEPT).thenReturn('text') count = 1 for true in TRUES: self.alert.dismiss_alert(true) verify(AlertKeywords, times=count).handle_alert(ACCEPT) count += 1 self.alert.dismiss_alert() verify(AlertKeywords, times=count).handle_alert(ACCEPT) def test_dismiss_alert_false(self): when(AlertKeywords).handle_alert(DISMISS).thenReturn('text') count = 1 for false in FALSES: self.alert.dismiss_alert(false) verify(AlertKeywords, times=count).handle_alert(DISMISS) count += 1
def setUpClass(self): self.alert = AlertKeywords(mock())
class KeywordArgumentsAlertTest(unittest.TestCase): @classmethod def setUpClass(self): self.alert = AlertKeywords(mock()) def tearDown(self): unstub() def test_get_alert_message_dismiss_true(self): when(AlertKeywords).handle_alert(DISMISS).thenReturn('text') count = 1 for true in TRUES: self.alert.get_alert_message(true) verify(AlertKeywords, times=count).handle_alert(DISMISS) count += 1 self.alert.get_alert_message() verify(AlertKeywords, times=count).handle_alert(DISMISS) def test_get_alert_message_dismiss_false(self): when(AlertKeywords).handle_alert(LEAVE).thenReturn('text') count = 1 for false in FALSES: self.alert.get_alert_message(false) verify(AlertKeywords, times=count).handle_alert(LEAVE) count += 1 def test_dismiss_alert_true(self): when(AlertKeywords).handle_alert(ACCEPT).thenReturn('text') count = 1 for true in TRUES: self.alert.dismiss_alert(true) verify(AlertKeywords, times=count).handle_alert(ACCEPT) count += 1 self.alert.dismiss_alert() verify(AlertKeywords, times=count).handle_alert(ACCEPT) def test_dismiss_alert_false(self): when(AlertKeywords).handle_alert(DISMISS).thenReturn('text') count = 1 for false in FALSES: self.alert.dismiss_alert(false) verify(AlertKeywords, times=count).handle_alert(DISMISS) count += 1
def __init__(self, timeout=5.0, implicit_wait=0.0, run_on_failure='Capture Page Screenshot', screenshot_root_directory=None, plugins=None): """SeleniumLibrary can be imported with several optional arguments. - ``timeout``: Default value for `timeouts` used with ``Wait ...`` keywords. - ``implicit_wait``: Default value for `implicit wait` used when locating elements. - ``run_on_failure``: Default action for the `run-on-failure functionality`. - ``screenshot_root_directory``: Location where possible screenshots are created. If not given, the directory where the log file is written is used. - ``plugins``: Allows extending the SeleniumLibrary with external Python classes. """ self.timeout = timestr_to_secs(timeout) self.implicit_wait = timestr_to_secs(implicit_wait) self.speed = 0.0 self.run_on_failure_keyword \ = RunOnFailureKeywords.resolve_keyword(run_on_failure) self._running_on_failure_keyword = False self.screenshot_root_directory = screenshot_root_directory self._element_finder = ElementFinder(self) self._plugin_keywords = [] libraries = [ AlertKeywords(self), BrowserManagementKeywords(self), CookieKeywords(self), ElementKeywords(self), FormElementKeywords(self), FrameKeywords(self), JavaScriptKeywords(self), RunOnFailureKeywords(self), ScreenshotKeywords(self), SelectElementKeywords(self), TableElementKeywords(self), WaitingKeywords(self), WindowKeywords(self) ] if is_truthy(plugins): parsed_plugins = self._string_to_modules(plugins) for index, plugin in enumerate( self._import_modules(parsed_plugins)): if not isclass(plugin): message = "Importing test library: '%s' failed." % parsed_plugins[ index].plugin raise DataError(message) plugin = plugin(self, *parsed_plugins[index].args, **parsed_plugins[index].kw_args) if not isinstance(plugin, LibraryComponent): message = 'Plugin does not inherit SeleniumLibrary.base.LibraryComponent' raise PluginError(message) self._store_plugin_keywords(plugin) libraries.append(plugin) self._drivers = WebDriverCache() DynamicCore.__init__(self, libraries) self.ROBOT_LIBRARY_LISTENER = LibraryListener()