Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.selenium.smart_components
from .components import (
Component,
Target,
)
[docs]class SmartComponent(object):
"""Wrap a Component with driver aware methods.
Allows smarter selectors that know how to wait for themselves, test themselves,
click themselves, etc.... More "magic", but much cleaner usage.
"""
[docs] def __init__(self, component, has_driver):
self._component = component
self._has_driver = has_driver
def __getattr__(self, name):
return self._wrap(getattr(self._component, name))
def __getitem__(self, name):
return self._wrap(self._component[name])
def _wrap(self, simple_object):
if isinstance(simple_object, Component):
return SmartComponent(simple_object, self._has_driver)
elif isinstance(simple_object, Target):
return SmartTarget(simple_object, self._has_driver)
else:
return simple_object
[docs]class SmartTarget(object):
"""Wrap a Target with driver aware methods.
"""
def __call__(self, *args, **kwds):
return self._wrap(self._target(*args[:], **kwds.copy()))
def __getattr__(self, name):
return self._wrap(getattr(self._target, name))
def __getitem__(self, name):
return self._wrap(self._target[name])
def _wrap(self, simple_object):
if isinstance(simple_object, Target):
return SmartTarget(simple_object, self._has_driver)
else:
return simple_object
[docs] def wait_for_and_click(self, **kwds):
return self._has_driver.wait_for_and_click(self._target, **kwds)
[docs] def wait_for_visible(self, **kwds):
return self._has_driver.wait_for_visible(self._target, **kwds)
[docs] def wait_for_clickable(self, **kwds):
return self._has_driver.wait_for_clickable(self._target, **kwds)
[docs] def wait_for_text(self, **kwds):
return self._has_driver.wait_for_visible(self._target, **kwds).text
[docs] def wait_for_value(self, **kwds):
return self._has_driver.wait_for_visible(self._target, **kwds).get_attribute("value")
@property
def is_displayed(self):
return self._has_driver.is_displayed(self._target)
[docs] def wait_for_present(self, **kwds):
return self._has_driver.wait_for_present(self._target, **kwds)
[docs] def has_class(self, class_name):
return class_name in self._has_driver.driver.find_element(*self._target.element_locator).get_attribute("class")