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