from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException from common import scaf logger = scaf.get_logger(__name__) class DynamicElement: def __init__(self, locator_type, locator, driver, name=None, parent=None): self.__driver = driver self.__locator_type = locator_type self.__locator = locator self.__name = locator if name is None else name self.__parent = parent @property def name(self): return self.__name @property def selenium_element(self): if self.__parent is None: try: logger.info(f"Looking for element {self.__locator}") return self.__driver.find_element(self.__locator_type, self.__locator) except NoSuchElementException: logger.exception( "An element '{0}' {1}could not be located on the page.". format( self.__name, "" if self.__locator == self.__name else
import time from selenium.webdriver import ActionChains from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException from common.webdriver_qa_api.core.utils import assert_should_be_equal, fail_test, assert_should_be_not_equal,\ assert_should_contain, assert_should_not_contain, assert_should_be_greater_than from common.webdriver_qa_api.core.selenium_dynamic_elements import DynamicElement, DynamicElements from common.scaf import get_logger, config logger = get_logger(__name__) class BaseElement: WAIT_SECONDS = config.web_settings.webdriver_default_wait_time def __init__(self, locator_type, locator, driver, name=None, parent=None): self.locator_type = locator_type self.locator = locator self.driver = driver self.parent = parent self.name = locator if name is None else name self.ALLOWED_DYNAMIC_METHODS = None self.element = DynamicElement(locator_type=locator_type, locator=locator, driver=driver, name=name, parent=parent) def __getattr__(self, item):