from traceback import print_stack
from utilities.handy_wrappers import HandyWrappers
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import *
class ExplicitWaitType():
def __init__(self, driver):
self.driver = driver
self.hw = HandyWrappers(driver)
def waitForElement(self, locator, locatorType="id",
timeout=10, pollFrequency=0.5):
element = None
try:
byType = self.hw.getByType(locatorType)
print("Waiting for maximum :: " + str(timeout) +
" :: seconds for element to be clickable")
wait = WebDriverWait(self.driver, timeout=timeout, poll_frequency=pollFrequency,
ignored_exceptions=[NoSuchElementException,
ElementNotVisibleException,
ElementNotSelectableException])
element = wait.until(EC.element_to_be_clickable((byType, locator)))
print("Element appeared on the web page")
except:
print("Element not appeared on the web page")
print_stack()
return element
timeout is how much time you want to wait before time is out.
poll_frequency is the frequency of every poll.
ignored_exceptions is ignore those exceptions throwed.
EC is Expected Condition. element_to_be_clickable is the expected condition.
byType, locator is where the element is.