1
2 import pytest
3 import _pytest
4
5 from selenium import webdriver
6
7 from WebDriverTester import WebDriverTester
8 from TestHelper import Singleton
9 from tlib.base import TLibHelper
10 from selenium.common.exceptions import TimeoutException
11 from selenium.webdriver.support.ui import WebDriverWait
16 __metaclass__ = Singleton
17 _homepage = None
18
20 """
21 Returns Instance of the WebDriver browser
22 @rtype: webdriver.Remote
23 """
24 return self._driver
25
27 """
28 Instance of the WebDriver browser
29 @type browser: webdriver.Remote
30 """
31 self._driver = browser
32
33 browser = property(_get_browser, _set_browser)
34
35 - def _get_homepage(self):
36 """
37 Instance of the WebDriver homepage
38 """
39 return self._homepage
40
41 - def _set_homepage(self, homepage):
42 """
43 Instance of the WebDriver homepage
44 @type homepage: webdriver.Remote
45 """
46 self._homepage = homepage
47
48 homepage = property(_get_homepage, _set_homepage)
49
50 @pytest.fixture(scope='class', autouse=True)
68
69 @pytest.fixture(scope='function', autouse=True)
71 """
72 Goes to homepage before each test, unless marker skipsetup is given
73
74 @type request: FixtureRequest
75 @type test_logger: logging
76 @type browser: webdriver.Remote
77 """
78
79
80 if "skipsetup" not in request.node.function.__dict__:
81
82 self.go_home(save_screenshot=False)
83 browser.delete_all_cookies()
84 self.go_home()
85 else:
86 test_logger.info("Skipping setup")
87
88 - def navigate(self, page, save_screenshot=True):
96
97 - def go_home(self, save_screenshot=True):
105
106 - def wait_for_page_loaded(self, timeout=10):
107 """
108 Waist until document.readyState is equal to complete
109 @type timeout: Integer
110 @param timeout: Number of seconds before timing out
111 """
112 if self.browser.execute_script("return document.readyState") == "complete":
113 return
114 else:
115 self.tlib_logger.debug("Waiting for '%s' to load" % self._driver.current_url)
116
117 condition = lambda *args: self._driver.execute_script("return document.readyState") == "complete"
118 try:
119 WebDriverWait(self.browser, timeout).until(condition)
120 except TimeoutException:
121 self.test_logger.error('Timeout while waiting for page to load')
122
123 pytest.fail('Timeout while waiting for page to load')
124
125 self.tlib_logger.debug("Page '%s' finished loading" % self._driver.current_url)
126