diff --git a/src/common/utils/selenium.py b/src/common/utils/selenium.py index c59726d..71bb04e 100644 --- a/src/common/utils/selenium.py +++ b/src/common/utils/selenium.py @@ -14,10 +14,10 @@ identity, parameters = None, dict() def until(condition: typing.Callable[[WebDriver], bool], watch=True): try: - WebDriverWait(driver, parameters['timeout']).until(condition) + WebDriverWait(driver, parameters.get('timeout', 0)).until(condition) except (TimeoutException, StaleElementReferenceException): pass - if watch: WebDriverWait(driver, parameters['timeout']).until_not(condition) + if watch: WebDriverWait(driver, parameters.get('timeout', 0)).until_not(condition) def sleep(seconds: float): try: driver.switch_to.alert @@ -34,12 +34,12 @@ def locate(selector: str, wait=True, condition=True) -> WebElement: if not wait: return driver.find_element(*locator) presence = EC.presence_of_element_located(locator) - element = WebDriverWait(driver, parameters['timeout']).until(presence, 'Timeout') + element = WebDriverWait(driver, parameters.get('timeout', 0)).until(presence, 'Timeout') driver.execute_script("arguments[0].scrollIntoView({ block: 'center', inline: 'nearest' });", element) if condition is not None and condition != False: predicate = condition if callable(condition) else EC.visibility_of_element_located - element = WebDriverWait(driver, parameters['timeout']).until(predicate(locator), 'Timeout') + element = WebDriverWait(driver, parameters.get('timeout', 0)).until(predicate(locator), 'Timeout') return element except StaleElementReferenceException: @@ -55,7 +55,7 @@ def click(selector: str|WebElement, wait=True, condition=False): driver.execute_script("window.__%s__ = () => { arguments[0].setAttribute('%s', arguments[1] + 1) }" % ((identity,) * 2), element, value) driver.execute_script("arguments[0].addEventListener('click', __%s__);" % identity, element) - for _ in range(parameters['attempts']): + for _ in range(parameters.get('attempts', 0)): try: if not error: element.click() else: driver.execute_script("arguments[0].click();", element) @@ -65,7 +65,7 @@ def click(selector: str|WebElement, wait=True, condition=False): error = True continue try: - WebDriverWait(driver, parameters['interval']).until(lambda _: counter() > value) + WebDriverWait(driver, parameters.get('interval', 0)).until(lambda _: counter() > value) break except TimeoutException: continue except: break