1
2 import pytest
3
4 from selenium import webdriver
5
6 from WebDriverTester import WebDriverTester
7 from TestHelper import Singleton
12 __metaclass__ = Singleton
13 _homepage = None
14
15
17 """
18 Returns Instance of the WebDriver browser
19 @rtype: webdriver.Remote
20 """
21 return self._driver
22
24 """
25 Instance of the WebDriver browser
26 @type browser: webdriver.Remote
27 """
28 self._driver = browser
29
30 browser = property(_get_browser, _set_browser)
31
32 - def _get_homepage(self):
33 """
34 Instance of the WebDriver homepage
35 """
36 return self._homepage
37
38 - def _set_homepage(self, homepage):
39 """
40 Instance of the WebDriver homepage
41 @type homepage: webdriver.Remote
42 """
43 self._homepage = homepage
44
45 homepage = property(_get_homepage, _set_homepage)
46
47
48 @pytest.fixture(scope='class', autouse=True)
50 """
51 @type browser: webdriver.Remote
52 @type base_url: str
53 """
54 self.browser = browser
55
56
57 if self.homepage is None:
58 self.homepage = base_url
59
60
61 @pytest.fixture(scope='function', autouse=True)
63 """
64 Goes to homepage before each test, unless marker skipsetup is given
65
66 @type request: FixtureRequest
67 @type test_logger: logging
68 @type browser: webdriver.Remote
69 """
70
71
72 if "skipsetup" not in request.node.function.__dict__:
73
74 self.go_home(save_screenshot=False)
75 browser.delete_all_cookies()
76 self.go_home()
77 else:
78 self.test_logger.info("Skipping setup")
79
80
81 - def navigate(self, page, save_screenshot=True):
82 """
83 Navigate to "page"
84 """
85 self.test_logger.info(u"Navigating to %s" % page)
86 self.browser.get(page)
87 if save_screenshot:
88 self.save_screenshot(u"Navigate to %s" % page)
89
90
91 - def go_home(self, save_screenshot=True):
98
99 - def wait_for_page_loaded(self, timeout=10):
100 """
101 Waist until document.readyState is equal to complete
102 @type timeout: Integer
103 @param timeout: Number of seconds before timing out
104 """
105 if self.browser.execute_script("return document.readyState") == "complete":
106 return
107 else:
108 self.tlib_logger.debug("Waiting for '%s' to load" % self._driver.current_url)
109
110 condition = lambda *args: self._driver.execute_script("return document.readyState") == "complete"
111 try:
112 WebDriverWait(self.browser, timeout).until(condition)
113 except TimeoutException:
114 self.test_logger.error('Timeout while waiting for page to load')
115 pytest.fail('Timeout while waiting for page to load')
116
117 self.tlib_logger.debug("Page '%s' finished loading" % self._driver.current_url)
118