From d411d38b8160e48540ee13e36fdfd6d06b8709c8 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Thu, 10 Sep 2015 14:54:45 +0200 Subject: Add 'with ImplicitWait' to allow shorter timeouts - necessary if elements do not exist, selenium seems to wait the entire explict timeout in this case --- service/test/functional/features/steps/common.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'service/test/functional/features/steps/common.py') diff --git a/service/test/functional/features/steps/common.py b/service/test/functional/features/steps/common.py index b45f86db..d9db92b0 100644 --- a/service/test/functional/features/steps/common.py +++ b/service/test/functional/features/steps/common.py @@ -28,9 +28,22 @@ LOADING = 'loading' TIMEOUT_IN_S = 20 +DEFAULT_IMPLICIT_WAIT_TIMEOUT_IN_S = 10.0 + + +class ImplicitWait(object): + def __init__(self, context, timeout=5.0): + self._context = context + self._timeout = timeout + + def __enter__(self): + self._context.browser.implicitly_wait(self._timeout) + + def __exit__(self, exc_type, exc_val, exc_tb): + self._context.browser.implicitly_wait(DEFAULT_IMPLICIT_WAIT_TIMEOUT_IN_S) + def wait_until_element_is_invisible_by_locator(context, locator_tuple, timeout=TIMEOUT_IN_S): - spend_time_in_reactor() wait = WebDriverWait(context.browser, timeout) wait.until(EC.invisibility_of_element_located(locator_tuple)) -- cgit v1.2.3