Source code for selenium_configurator.drivers.remote

# -*- coding: utf-8 -*-
from copy import deepcopy
from selenium_configurator.driver import Driver
from selenium import webdriver


[docs]class Grid(Driver): """Grid Driver class to use over browsers over a `Selenium Grid <TODO LINK>`_ It give you the availybility to request multiple browsers against one Grid server. Configuration settings to get 1 Chrome and 1 Firefox over a Grid service:: conf = { 'class': 'selenium_configurator.drivers.remote.Grid', 'capabilities': { # Capabilities shared with request browser and overload # general capabilities }, "request_drivers": [ { "browserName": "firefox", "platform": "LINUX", "version": "", # other capabilities }, { "browserName": "chrome", "platform": "LINUX", "version": "", }, ] } from selenium_configurator.driver.remote import Grid driver_list = Grid.get_web_drivers(conf) `Available request drivers capabilities <https://github.com/SeleniumHQ/ selenium/wiki/JsonWireProtocol>`_ """ @classmethod
[docs] def get_web_drivers(cls, conf, global_capabilities=None): """Prepare 1 selenium driver instance per request browsers :param conf: :param global_capabilities: :return: """ web_drivers = [] if not global_capabilities: global_capabilities = {} else: global_capabilities = deepcopy(global_capabilities) grid_conf = deepcopy(conf) grid_conf.pop('class', None) request_drivers = grid_conf.pop('request_drivers', []) capabilities = grid_conf.pop('capabilities', {}) global_capabilities.update(capabilities) for browser_req in request_drivers: name = 'grid' name = '%s_%s' % (name, browser_req.get('browserName')) name = '%s_%s' % (name, browser_req.get('version', 'lastest')) name = '%s_%s' % (name, browser_req.get('platform', 'ANY')) web_drivers.append(Grid(grid_conf, browser_req, name=name, global_capabilities=global_capabilities)) return web_drivers
def __init__( self, grid_conf, desired_capabilities, global_capabilities=None, name=None ): """Init grid driver configurationn, in main case you would probably prefer use get_web_drivers method to instantiate driver class from the configuration. :param grid_conf: config related to the Grid itself :param desired_capabilities: desired browser against that grid :param global_capabilities: global capabilities request overs all browsers :param name: name of the driver """ capab = deepcopy(global_capabilities) if global_capabilities else {} capab.update(desired_capabilities) self._capabilities = deepcopy(grid_conf) self._capabilities.update({ 'desired_capabilities': capab }) if name: self._name = name def _start_driver(self): return webdriver.Remote(**self._capabilities)