Skip to content

Instantly share code, notes, and snippets.

@seaders
Forked from dnedbaylo/PersistentWebdriver.py
Created May 26, 2013 20:05
Show Gist options
  • Save seaders/5653863 to your computer and use it in GitHub Desktop.
Save seaders/5653863 to your computer and use it in GitHub Desktop.
Valid for newest selenium and pep8 compliant.
from selenium import webdriver
from selenium.webdriver.remote.remote_connection import RemoteConnection
from selenium.webdriver.remote.errorhandler import ErrorHandler
class PersistentWebdriver (webdriver.Remote):
def __init__(self, command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities=None, browser_profile=None, proxy=None,
session_id=None, browser_name=''):
platform = version = ''
javascript_enabled = True
self.command_executor = command_executor
if type(self.command_executor) is str:
self.command_executor = RemoteConnection(command_executor)
self.command_executor._commands['GET_SESSION'] = \
('GET', '/session/$sessionId')
self.session_id = session_id
self.capabilities = {}
self.error_handler = ErrorHandler()
if session_id:
self.connect_to_session(
browser_name=browser_name,
platform=platform,
version=version,
javascript_enabled=javascript_enabled
)
else:
self.start_session(
desired_capabilities=desired_capabilities,
browser_profile=browser_profile
)
def connect_to_session(self, browser_name, platform, version,
javascript_enabled):
response = self.execute('GET_SESSION', {
'desiredCapabilities': {
'browserName': browser_name,
'platform': platform or 'ANY',
'version': version or '',
'javascriptEnabled': javascript_enabled
},
'sessionId': self.session_id
})
self.session_id = response['sessionId']
self.capabilities = response['value']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment