def start_webdriver_client(self): capabilities = {} for c in self.capabilities: name, value = c.split(':') # handle integer capabilities if value.isdigit(): value = int(value) # handle boolean capabilities elif value.lower() in ['true', 'false']: value = value.lower() == 'true' capabilities.update({name: value}) if self.proxy_host and self.proxy_port: proxy = Proxy() proxy.http_proxy = '%s:%s' % (self.proxy_host, self.proxy_port) proxy.ssl_proxy = proxy.http_proxy proxy.add_to_capabilities(capabilities) profile = None if self.driver.upper() == 'REMOTE': capabilities.update(getattr(webdriver.DesiredCapabilities, self.browser_name.upper())) if json.loads(self.chrome_options) or self.extension_paths: capabilities = self.create_chrome_options( self.chrome_options, self.extension_paths).to_capabilities() if self.browser_name.upper() == 'FIREFOX': profile = self.create_firefox_profile( self.firefox_preferences, self.profile_path, self.extension_paths) if self.browser_version: capabilities['version'] = self.browser_version capabilities['platform'] = self.platform.upper() executor = 'http://%s:%s/wd/hub' % (self.host, self.port) try: self.selenium = webdriver.Remote(command_executor=executor, desired_capabilities=capabilities or None, browser_profile=profile) except AttributeError: valid_browsers = [attr for attr in dir(webdriver.DesiredCapabilities) if not attr.startswith('__')] raise AttributeError("Invalid browser name: '%s'. Valid options are: %s" % (self.browser_name, ', '.join(valid_browsers))) elif self.driver.upper() == 'CHROME': options = None if self.chrome_options or self.extension_paths: options = self.create_chrome_options( self.chrome_options, self.extension_paths) if self.chrome_path: self.selenium = webdriver.Chrome(executable_path=self.chrome_path, chrome_options=options, desired_capabilities=capabilities or None) else: self.selenium = webdriver.Chrome(chrome_options=options, desired_capabilities=capabilities or None) elif self.driver.upper() == 'FIREFOX': binary = self.firefox_path and FirefoxBinary(self.firefox_path) or None profile = self.create_firefox_profile( self.firefox_preferences, self.profile_path, self.extension_paths) self.selenium = webdriver.Firefox( firefox_binary=binary, firefox_profile=profile, capabilities=capabilities or None) elif self.driver.upper() == 'IE': self.selenium = webdriver.Ie() elif self.driver.upper() == 'PHANTOMJS': self.selenium = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true']) elif self.driver.upper() == 'OPERA': capabilities.update(webdriver.DesiredCapabilities.OPERA) self.selenium = webdriver.Opera(executable_path=self.opera_path, desired_capabilities=capabilities) else: self.selenium = getattr(webdriver, self.driver)() if self.event_listener is not None and not isinstance(self.selenium, EventFiringWebDriver): self.selenium = EventFiringWebDriver(self.selenium, self.event_listener())
def get_driver(driver): if driver == "firefox": driver = webdriver.Firefox() driver.maximize_window() driver.implicitly_wait(5) return EventFiringWebDriver(driver, WebdriverReporterListener())
def _wrap_event_firing_webdriver(self, driver): if not self.ctx.event_firing_webdriver: return driver self.debug('Wrapping driver to event_firing_webdriver.') return EventFiringWebDriver(driver, self.ctx.event_firing_webdriver())
def driver(request): browser = request.config.getoption("--browser") try: timeout_str = request.config.getoption("--timeouts") timeout = int(timeout_str) except ValueError: print("Bad --timeouts value: ".join(timeout_str)) timeout = 10000 if browser == 'firefox': capabilities = webdriver.DesiredCapabilities.FIREFOX.copy() capabilities['timeouts'] = { 'implicit': timeout, 'pageLoad': timeout, 'script': timeout } capabilities['loggingPrefs'] = { 'browser': 'ALL', 'client': 'ALL', 'driver': 'ALL', 'performance': 'ALL', 'server': 'ALL' } profile = webdriver.FirefoxProfile() profile.set_preference('app.update.auto', False) profile.set_preference('app.update.enabled', False) profile.accept_untrusted_certs = True wd = webdriver.Firefox(firefox_profile=profile, capabilities=capabilities) wd.maximize_window() elif browser == 'chrome': capabilities = webdriver.DesiredCapabilities.CHROME.copy() capabilities['timeouts'] = { 'implicit': timeout, 'pageLoad': timeout, 'script': timeout } capabilities['acceptSslCerts'] = True capabilities['acceptInsecureCerts'] = True wd = webdriver.Chrome(desired_capabilities=capabilities) wd.maximize_window() elif browser == 'ie': options = IeOptions() options.add_argument("--start-fullscreen") options.add_argument('--headless') wd = webdriver.Ie(options=options) else: print('Unsupported browser!') sys.exit(1) log_folder = request.config.getoption("--logfolder") logger = get_logger(log_folder, "webDriverLog") logged_driver = EventFiringWebDriver(wd, WdEventListener(logger)) yield logged_driver if browser == 'chrome': browser_logger = get_logger(log_folder, "chromeLog", "%(message)s") for l in logged_driver.get_log("browser"): browser_logger.info(l) logged_driver.quit()
def firefox_browser(request): ff_wd = EventFiringWebDriver(webdriver.Firefox(), MyListener()) request.addfinalizer(ff_wd.quit) return ff_wd
def __init__(self, driver): super().__init__(EventFiringWebDriver(driver, LogEventListener()))