def __init__(self, remote_server_addr, keep_alive=False, resolve_ip=True): # Attempt to resolve the hostname and get an IP address. self.keep_alive = keep_alive parsed_url = parse.urlparse(remote_server_addr) if parsed_url.hostname and resolve_ip: port = parsed_url.port or None if parsed_url.scheme == "https": ip = parsed_url.hostname else: ip = common_utils.find_connectable_ip(parsed_url.hostname, port=port) if ip: netloc = ip if parsed_url.port: netloc = common_utils.join_host_port(netloc, parsed_url.port) if parsed_url.username: auth = parsed_url.username if parsed_url.password: auth += ":%s" % parsed_url.password netloc = "%s@%s" % (auth, netloc) remote_server_addr = parse.urlunparse(( parsed_url.scheme, netloc, parsed_url.path, parsed_url.params, parsed_url.query, parsed_url.fragment, )) else: LOGGER.info("Could not get IP address for host: %s" % parsed_url.hostname) self._url = remote_server_addr if keep_alive: self._conn = urllib3.PoolManager() self._commands = { Command.STATUS: ("GET", "/status"), Command.NEW_SESSION: ("POST", "/session"), Command.GET_ALL_SESSIONS: ("GET", "/sessions"), Command.QUIT: ("DELETE", "/session/$sessionId"), Command.GET_CURRENT_WINDOW_HANDLE: ("GET", "/session/$sessionId/window_handle"), Command.W3C_GET_CURRENT_WINDOW_HANDLE: ("GET", "/session/$sessionId/window"), Command.GET_WINDOW_HANDLES: ("GET", "/session/$sessionId/window_handles"), Command.W3C_GET_WINDOW_HANDLES: ("GET", "/session/$sessionId/window/handles"), Command.GET: ("POST", "/session/$sessionId/url"), Command.GO_FORWARD: ("POST", "/session/$sessionId/forward"), Command.GO_BACK: ("POST", "/session/$sessionId/back"), Command.REFRESH: ("POST", "/session/$sessionId/refresh"), Command.EXECUTE_SCRIPT: ("POST", "/session/$sessionId/execute"), Command.W3C_EXECUTE_SCRIPT: ("POST", "/session/$sessionId/execute/sync"), Command.W3C_EXECUTE_SCRIPT_ASYNC: ("POST", "/session/$sessionId/execute/async"), Command.GET_CURRENT_URL: ("GET", "/session/$sessionId/url"), Command.GET_TITLE: ("GET", "/session/$sessionId/title"), Command.GET_PAGE_SOURCE: ("GET", "/session/$sessionId/source"), Command.SCREENSHOT: ("GET", "/session/$sessionId/screenshot"), Command.ELEMENT_SCREENSHOT: ("GET", "/session/$sessionId/element/$id/screenshot"), Command.FIND_ELEMENT: ("POST", "/session/$sessionId/element"), Command.FIND_ELEMENTS: ("POST", "/session/$sessionId/elements"), Command.W3C_GET_ACTIVE_ELEMENT: ("GET", "/session/$sessionId/element/active"), Command.GET_ACTIVE_ELEMENT: ("POST", "/session/$sessionId/element/active"), Command.FIND_CHILD_ELEMENT: ("POST", "/session/$sessionId/element/$id/element"), Command.FIND_CHILD_ELEMENTS: ("POST", "/session/$sessionId/element/$id/elements"), Command.CLICK_ELEMENT: ("POST", "/session/$sessionId/element/$id/click"), Command.CLEAR_ELEMENT: ("POST", "/session/$sessionId/element/$id/clear"), Command.SUBMIT_ELEMENT: ("POST", "/session/$sessionId/element/$id/submit"), Command.GET_ELEMENT_TEXT: ("GET", "/session/$sessionId/element/$id/text"), Command.SEND_KEYS_TO_ELEMENT: ("POST", "/session/$sessionId/element/$id/value"), Command.SEND_KEYS_TO_ACTIVE_ELEMENT: ("POST", "/session/$sessionId/keys"), Command.UPLOAD_FILE: ("POST", "/session/$sessionId/file"), Command.GET_ELEMENT_VALUE: ("GET", "/session/$sessionId/element/$id/value"), Command.GET_ELEMENT_TAG_NAME: ("GET", "/session/$sessionId/element/$id/name"), Command.IS_ELEMENT_SELECTED: ("GET", "/session/$sessionId/element/$id/selected"), Command.SET_ELEMENT_SELECTED: ("POST", "/session/$sessionId/element/$id/selected"), Command.IS_ELEMENT_ENABLED: ("GET", "/session/$sessionId/element/$id/enabled"), Command.IS_ELEMENT_DISPLAYED: ("GET", "/session/$sessionId/element/$id/displayed"), Command.GET_ELEMENT_LOCATION: ("GET", "/session/$sessionId/element/$id/location"), Command.GET_ELEMENT_LOCATION_ONCE_SCROLLED_INTO_VIEW: ( "GET", "/session/$sessionId/element/$id/location_in_view", ), Command.GET_ELEMENT_SIZE: ("GET", "/session/$sessionId/element/$id/size"), Command.GET_ELEMENT_RECT: ("GET", "/session/$sessionId/element/$id/rect"), Command.GET_ELEMENT_ATTRIBUTE: ("GET", "/session/$sessionId/element/$id/attribute/$name"), Command.GET_ELEMENT_PROPERTY: ("GET", "/session/$sessionId/element/$id/property/$name"), Command.ELEMENT_EQUALS: ("GET", "/session/$sessionId/element/$id/equals/$other"), Command.GET_ALL_COOKIES: ("GET", "/session/$sessionId/cookie"), Command.ADD_COOKIE: ("POST", "/session/$sessionId/cookie"), Command.DELETE_ALL_COOKIES: ("DELETE", "/session/$sessionId/cookie"), Command.DELETE_COOKIE: ("DELETE", "/session/$sessionId/cookie/$name"), Command.SWITCH_TO_FRAME: ("POST", "/session/$sessionId/frame"), Command.SWITCH_TO_PARENT_FRAME: ("POST", "/session/$sessionId/frame/parent"), Command.SWITCH_TO_WINDOW: ("POST", "/session/$sessionId/window"), Command.CLOSE: ("DELETE", "/session/$sessionId/window"), Command.GET_ELEMENT_VALUE_OF_CSS_PROPERTY: ( "GET", "/session/$sessionId/element/$id/css/$propertyName", ), Command.IMPLICIT_WAIT: ("POST", "/session/$sessionId/timeouts/implicit_wait"), Command.EXECUTE_ASYNC_SCRIPT: ("POST", "/session/$sessionId/execute_async"), Command.SET_SCRIPT_TIMEOUT: ("POST", "/session/$sessionId/timeouts/async_script"), Command.SET_TIMEOUTS: ("POST", "/session/$sessionId/timeouts"), Command.DISMISS_ALERT: ("POST", "/session/$sessionId/dismiss_alert"), Command.W3C_DISMISS_ALERT: ("POST", "/session/$sessionId/alert/dismiss"), Command.ACCEPT_ALERT: ("POST", "/session/$sessionId/accept_alert"), Command.W3C_ACCEPT_ALERT: ("POST", "/session/$sessionId/alert/accept"), Command.SET_ALERT_VALUE: ("POST", "/session/$sessionId/alert_text"), Command.W3C_SET_ALERT_VALUE: ("POST", "/session/$sessionId/alert/text"), Command.GET_ALERT_TEXT: ("GET", "/session/$sessionId/alert_text"), Command.W3C_GET_ALERT_TEXT: ("GET", "/session/$sessionId/alert/text"), Command.SET_ALERT_CREDENTIALS: ("POST", "/session/$sessionId/alert/credentials"), Command.CLICK: ("POST", "/session/$sessionId/click"), Command.W3C_ACTIONS: ("POST", "/session/$sessionId/actions"), Command.W3C_CLEAR_ACTIONS: ("DELETE", "/session/$sessionId/actions"), Command.DOUBLE_CLICK: ("POST", "/session/$sessionId/doubleclick"), Command.MOUSE_DOWN: ("POST", "/session/$sessionId/buttondown"), Command.MOUSE_UP: ("POST", "/session/$sessionId/buttonup"), Command.MOVE_TO: ("POST", "/session/$sessionId/moveto"), Command.GET_WINDOW_SIZE: ("GET", "/session/$sessionId/window/$windowHandle/size"), Command.SET_WINDOW_SIZE: ("POST", "/session/$sessionId/window/$windowHandle/size"), Command.GET_WINDOW_POSITION: ("GET", "/session/$sessionId/window/$windowHandle/position"), Command.SET_WINDOW_POSITION: ("POST", "/session/$sessionId/window/$windowHandle/position"), Command.SET_WINDOW_RECT: ("POST", "/session/$sessionId/window/rect"), Command.GET_WINDOW_RECT: ("GET", "/session/$sessionId/window/rect"), Command.MAXIMIZE_WINDOW: ("POST", "/session/$sessionId/window/$windowHandle/maximize"), Command.W3C_MAXIMIZE_WINDOW: ("POST", "/session/$sessionId/window/maximize"), Command.SET_SCREEN_ORIENTATION: ("POST", "/session/$sessionId/orientation"), Command.GET_SCREEN_ORIENTATION: ("GET", "/session/$sessionId/orientation"), Command.SINGLE_TAP: ("POST", "/session/$sessionId/touch/click"), Command.TOUCH_DOWN: ("POST", "/session/$sessionId/touch/down"), Command.TOUCH_UP: ("POST", "/session/$sessionId/touch/up"), Command.TOUCH_MOVE: ("POST", "/session/$sessionId/touch/move"), Command.TOUCH_SCROLL: ("POST", "/session/$sessionId/touch/scroll"), Command.DOUBLE_TAP: ("POST", "/session/$sessionId/touch/doubleclick"), Command.LONG_PRESS: ("POST", "/session/$sessionId/touch/longclick"), Command.FLICK: ("POST", "/session/$sessionId/touch/flick"), Command.EXECUTE_SQL: ("POST", "/session/$sessionId/execute_sql"), Command.GET_LOCATION: ("GET", "/session/$sessionId/location"), Command.SET_LOCATION: ("POST", "/session/$sessionId/location"), Command.GET_APP_CACHE: ("GET", "/session/$sessionId/application_cache"), Command.GET_APP_CACHE_STATUS: ("GET", "/session/$sessionId/application_cache/status"), Command.CLEAR_APP_CACHE: ("DELETE", "/session/$sessionId/application_cache/clear"), Command.GET_NETWORK_CONNECTION: ("GET", "/session/$sessionId/network_connection"), Command.SET_NETWORK_CONNECTION: ("POST", "/session/$sessionId/network_connection"), Command.GET_LOCAL_STORAGE_ITEM: ("GET", "/session/$sessionId/local_storage/key/$key"), Command.REMOVE_LOCAL_STORAGE_ITEM: ("DELETE", "/session/$sessionId/local_storage/key/$key"), Command.GET_LOCAL_STORAGE_KEYS: ("GET", "/session/$sessionId/local_storage"), Command.SET_LOCAL_STORAGE_ITEM: ("POST", "/session/$sessionId/local_storage"), Command.CLEAR_LOCAL_STORAGE: ("DELETE", "/session/$sessionId/local_storage"), Command.GET_LOCAL_STORAGE_SIZE: ("GET", "/session/$sessionId/local_storage/size"), Command.GET_SESSION_STORAGE_ITEM: ("GET", "/session/$sessionId/session_storage/key/$key"), Command.REMOVE_SESSION_STORAGE_ITEM: ( "DELETE", "/session/$sessionId/session_storage/key/$key", ), Command.GET_SESSION_STORAGE_KEYS: ("GET", "/session/$sessionId/session_storage"), Command.SET_SESSION_STORAGE_ITEM: ("POST", "/session/$sessionId/session_storage"), Command.CLEAR_SESSION_STORAGE: ("DELETE", "/session/$sessionId/session_storage"), Command.GET_SESSION_STORAGE_SIZE: ("GET", "/session/$sessionId/session_storage/size"), Command.GET_LOG: ("POST", "/session/$sessionId/log"), Command.GET_AVAILABLE_LOG_TYPES: ("GET", "/session/$sessionId/log/types"), Command.CURRENT_CONTEXT_HANDLE: ("GET", "/session/$sessionId/context"), Command.CONTEXT_HANDLES: ("GET", "/session/$sessionId/contexts"), Command.SWITCH_TO_CONTEXT: ("POST", "/session/$sessionId/context"), Command.FULLSCREEN_WINDOW: ("POST", "/session/$sessionId/window/fullscreen"), Command.MINIMIZE_WINDOW: ("POST", "/session/$sessionId/window/minimize"), }