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  import _pytest 
  4  # noinspection PyPackageRequirements 
  5  from selenium import webdriver 
  6  # noinspection PyPackageRequirements 
  7  from WebDriverTester import WebDriverTester 
  8  from TestHelper import Singleton 
  9  from tlib.base import TLibHelper 
10 # noinspection PyMethodParameters 11 # noinspection PyUnresolvedReferences 12 -class SeleniumTester(WebDriverTester):
13 __metaclass__ = Singleton 14 _homepage = None 15 16
17 - def _get_browser(self):
18 """ 19 Returns Instance of the WebDriver browser 20 @rtype: webdriver.Remote 21 """ 22 return self._driver
23
24 - def _set_browser(self, browser):
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)
50 - def initialize_selenium_class(self, browser, request, tlib_logger):
51 """ 52 @type browser: webdriver.Remote 53 @type base_url: str 54 """ 55 self.browser = browser 56 57 # Only initialize homepage if it wasn't already initialized 58 if self.homepage is None: 59 try: 60 self.homepage = TLibHelper.get_base_url(request, tlib_logger) 61 except _pytest.runner.Failed: 62 #If this exception is triggered, command line option --base_url was not specified 63 self.homepage = ''
64 65 66 @pytest.fixture(scope='function', autouse=True)
67 - def setup_selenium_test(self, request, browser):
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 #Skip going to homepage if marker skipsetup is specified 77 if "skipsetup" not in request.node.function.__dict__: 78 #Before clearing cookies, need to go to home screen, to ensure it's the current domain 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):
97 """ 98 Navigate to home page 99 """ 100 if self.homepage: 101 self.navigate(self.homepage, save_screenshot=False) 102 if save_screenshot: 103 self.save_screenshot("Homepage")
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