Unreviewed. Update W3C WebDriver imported tests.
[WebKit-https.git] / WebDriverTests / imported / w3c / webdriver / tests / support / wait.py
index f645abe..ab85e38 100644 (file)
@@ -1,10 +1,13 @@
+import sys
 import time
 
+
 class TimeoutException(Exception):
     pass
 
 
-def wait(session, condition, message, interval=0.1, timeout=5):
+def wait(session, condition, message,
+         interval=0.1, timeout=5, ignored_exceptions=Exception):
     """ Poll a condition until it's true or the timeout ellapses.
 
     :param session: WebDriver session to use with `condition`
@@ -12,6 +15,8 @@ def wait(session, condition, message, interval=0.1, timeout=5):
     :param message: failure description to display in case the timeout is reached
     :param interval: seconds between each call to `condition`. Default: 0.1
     :param timeout: seconds until we stop polling. Default: 5
+    :param ignored_exceptions: Exceptions that are expected and can be ignored.
+        Default: Exception
     """
 
     start = time.time()
@@ -19,10 +24,16 @@ def wait(session, condition, message, interval=0.1, timeout=5):
 
     while not (time.time() >= end):
         next_step = time.time() + interval
-        success = condition(session)
+        try:
+            success = condition(session)
+        except ignored_exceptions:
+            last_exc = sys.exc_info()[0]
+            success = False
         next_interval = max(next_step - time.time(), 0)
         if not success:
             time.sleep(next_interval)
             continue
         return success
+
+    print "Last exception encountered was {}".format(last_exc)
     raise TimeoutException("Timed out after %d seconds: %s" % (timeout, message))