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
13 __metaclass__ = Singleton
14 _homepage = None
15
16
18 """
19 Returns Instance of the WebDriver browser
20 @rtype: webdriver.Remote
21 """
22 return self._driver
23
25 """
26 Instance of the WebDriver browser
27 @type browser: webdriver.Remote
28 """
29 self._driver = browser
30
31 browser = property(_get_browser, _set_browser)
32
33 - def _get_homepage(self):
34 """
35 Instance of the WebDriver homepage
36 """
37 return self._homepage
38
39 - def _set_homepage(self, homepage):
40 """
41 Instance of the WebDriver homepage
42 @type homepage: webdriver.Remote
43 """
44 self._homepage = homepage
45
46 homepage = property(_get_homepage, _set_homepage)
47
48
49 @pytest.fixture(scope='class', autouse=True)
64
65
66 @pytest.fixture(scope='function', autouse=True)
68 """
69 Goes to homepage before each test, unless marker skipsetup is given
70
71 @type request: FixtureRequest
72 @type test_logger: logging
73 @type browser: webdriver.Remote
74 """
75
76
77 if "skipsetup" not in request.node.function.__dict__:
78
79 self.go_home(save_screenshot=False)
80 browser.delete_all_cookies()
81 self.go_home()
82 else:
83 self.test_logger.info("Skipping setup")
84
85
86 - def navigate(self, page, save_screenshot=True):
87 """
88 Navigate to "page"
89 """
90 self.test_logger.info(u"Navigating to %s" % page)
91 self.browser.get(page)
92 if save_screenshot:
93 self.save_screenshot(u"Navigate to %s" % page)
94
95
96 - def go_home(self, save_screenshot=True):
104
105 - def wait_for_page_loaded(self, timeout=10):
106 """
107 Waist until document.readyState is equal to complete
108 @type timeout: Integer
109 @param timeout: Number of seconds before timing out
110 """
111 if self.browser.execute_script("return document.readyState") == "complete":
112 return
113 else:
114 self.tlib_logger.debug("Waiting for '%s' to load" % self._driver.current_url)
115
116 condition = lambda *args: self._driver.execute_script("return document.readyState") == "complete"
117 try:
118 WebDriverWait(self.browser, timeout).until(condition)
119 except TimeoutException:
120 self.test_logger.error('Timeout while waiting for page to load')
121 pytest.fail('Timeout while waiting for page to load')
122
123 self.tlib_logger.debug("Page '%s' finished loading" % self._driver.current_url)
124