17 from collections
import namedtuple
18 from inspect
import isclass
20 from robot.api
import logger
21 from robot.errors
import DataError
22 from robot.libraries.BuiltIn
import BuiltIn
23 from robot.utils.importer
import Importer
28 BrowserManagementKeywords,
36 SelectElementKeywords,
45 __version__ =
'4.0.0a2.dev1'
345 ROBOT_LIBRARY_SCOPE =
'GLOBAL'
346 ROBOT_LIBRARY_VERSION = __version__
366 run_on_failure='Capture Page Screenshot',
367 screenshot_root_directory=None, plugins=None,
368 event_firing_webdriver=None):
369 self.
timeouttimeout = timestr_to_secs(timeout)
372 self.run_on_failure_keyword \
373 = RunOnFailureKeywords.resolve_keyword(run_on_failure)
380 BrowserManagementKeywords(self),
381 CookieKeywords(self),
382 ElementKeywords(self),
383 FormElementKeywords(self),
385 JavaScriptKeywords(self),
386 RunOnFailureKeywords(self),
387 ScreenshotKeywords(self),
388 SelectElementKeywords(self),
389 TableElementKeywords(self),
390 WaitingKeywords(self),
395 libraries = libraries + plugin_libs
397 DynamicCore.__init__(self, libraries)
406 return DynamicCore.run_keyword(self, name, args, kwargs)
412 tags = list(DynamicCore.get_keyword_tags(self, name))
414 tags.append(
'plugin')
427 return self.
_drivers_drivers.register(driver, alias)
441 except Exception
as err:
442 logger.warn(
"Keyword '%s' could not be run on failure: %s"
443 % (self.run_on_failure_keyword, err))
456 if not self.
_drivers_drivers.current:
458 return self.
_drivers_drivers.current
473 return self.
_element_finder_element_finder.find(locator, parent=parent)
487 return self.
_element_finder_element_finder.find(locator, first_only=
False,
488 required=
False, parent=parent)
492 importer = Importer(
'test library')
494 plugin = importer.import_class_or_module(parsed_plugin.module)
495 if not isclass(plugin):
496 message =
"Importing test library: '%s' failed." % parsed_plugin.module
497 raise DataError(message)
498 plugin = plugin(self, *parsed_plugin.args,
499 **parsed_plugin.kw_args)
500 if not isinstance(plugin, LibraryComponent):
501 message =
'Plugin does not inherit SeleniumLibrary.base.LibraryComponent'
504 libraries.append(plugin)
509 listener_count = len(listener_module )
510 if listener_count > 1:
511 message =
'Is is possible import only one listener but there was %s listeners.' % listener_count
512 raise ValueError(message)
513 listener_module = listener_module[0]
514 importer = Importer(
'test library')
515 listener = importer.import_class_or_module(listener_module.module)
516 if not isclass(listener):
517 message =
"Importing test Selenium lister class '%s' failed." % listener_module.module
518 raise DataError(message)
522 Module = namedtuple(
'Module',
'module, args, kw_args')
524 for module
in modules.split(
','):
525 module = module.strip()
526 module_and_args = module.split(
';')
527 module_name = module_and_args.pop(0)
530 for argument
in module_and_args:
532 key, value = argument.split(
'=')
535 args.append(argument)
536 module = Module(module=module_name, args=args, kw_args=kw_args)
537 parsed_modules.append(module)
538 return parsed_modules
541 dynamic_core = DynamicCore([plugin])
542 self.
_plugin_keywords_plugin_keywords.extend(dynamic_core.get_keyword_names())
SeleniumLibrary is a web testing library for Robot Framework.
def get_keyword_tags(self, name)
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.
def _parse_plugins(self, plugins)
def failure_occurred(self)
Method that is executed when a SeleniumLibrary keyword fails.
_running_on_failure_keyword
screenshot_root_directory
def _string_to_modules(self, modules)
def find_elements(self, locator, parent=None)
Find all elements matching locator.
def _parse_listener(self, event_firing_webdriver)
def _store_plugin_keywords(self, plugin)
def register_driver(self, driver, alias)
Add's a driver to the library WebDriverCache.
driver
Current active driver.
def run_keyword(self, name, args, kwargs)
def find_element(self, locator, parent=None)
Find element matching locator.