Package tlib :: Package base :: Module SeleniumTester
[hide private]
[frames] | no frames]

Source Code for Module tlib.base.SeleniumTester

  1  # noinspection PyPackageRequirements 
  2  import pytest 
  3  # noinspection PyPackageRequirements 
  4  from selenium import webdriver 
  5  # noinspection PyPackageRequirements 
  6  from WebDriverTester import WebDriverTester 
  7  from TestHelper import Singleton 
8 9 # noinspection PyMethodParameters 10 # noinspection PyUnresolvedReferences 11 -class SeleniumTester(WebDriverTester):
12 __metaclass__ = Singleton 13 _homepage = None 14 15
16 - def _get_browser(self):
17 """ 18 Returns Instance of the WebDriver browser 19 @rtype: webdriver.Remote 20 """ 21 return self._driver
22
23 - def _set_browser(self, browser):
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)
49 - def initialize_selenium_class(self, browser, base_url):
50 """ 51 @type browser: webdriver.Remote 52 @type base_url: str 53 """ 54 self.browser = browser 55 56 # Only initialize homepage if it wasn't already initialized 57 if self.homepage is None: 58 self.homepage = base_url
59 60 61 @pytest.fixture(scope='function', autouse=True)
62 - def setup_selenium_test(self, request, browser):
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 #Skip going to homepage if marker skipsetup is specified 72 if "skipsetup" not in request.node.function.__dict__: 73 #Before clearing cookies, need to go to home screen, to ensure it's the current domain 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):
92 """ 93 Navigate to home page 94 """ 95 self.navigate(self.homepage, save_screenshot=False) 96 if save_screenshot: 97 self.save_screenshot("Homepage")
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