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 11 12 # noinspection PyMethodParameters 13 # noinspection PyUnresolvedReferences 14 -class SeleniumTester(WebDriverTester):
15 __metaclass__ = Singleton 16 _homepage = None 17
18 - def _get_browser(self):
19 """ 20 Returns Instance of the WebDriver browser 21 @rtype: webdriver.Remote 22 """ 23 return self._driver
24
25 - def _set_browser(self, browser):
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)
50 - def initialize_selenium_class(self, browser, request, tlib_logger, initialize_webdriver_class):
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 @pytest.fixture(scope='function', autouse=True)
66 - def setup_selenium_test(self, request, browser, setup_webdriver_test):
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 #Skip going to homepage if marker skipsetup is specified 76 if "skipsetup" not in request.node.function.__dict__: 77 #Before clearing cookies, need to go to home screen, to ensure it's the current domain 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):
94 """ 95 Navigate to home page 96 """ 97 if self.homepage: 98 self.navigate(self.homepage, save_screenshot=False) 99 if save_screenshot: 100 self.save_screenshot("Homepage")
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