Solución:
Esta es una respuesta duplicada ** Vuelva a conectarse a un controlador en python selenium ** Esto es aplicable en todos los controladores y para la API de Java.
- abrir un controlador
driver = webdriver.Firefox() #python
- extraer a session_id y _url del objeto del controlador.
url = driver.command_executor._url #"http://127.0.0.1:60622/hub"
session_id = driver.session_id #'4e167f26-dc1d-4f51-a207-f761eaf73c31'
- Utilice estos dos parámetros para conectarse a su controlador.
driver = webdriver.Remote(command_executor=url,desired_capabilities={})
driver.close() # this prevents the dummy browser
driver.session_id = session_id
Y está conectado nuevamente con su conductor.
driver.get("http://www.mrsmart.in")
Esta es una solicitud de función bastante antigua: permitir que webdriver se conecte a un navegador en ejecución. Por lo que oficialmente no es compatible.
Sin embargo, hay un código de trabajo que afirma ser compatible con esto: https://web.archive.org/web/20171214043703/http://tarunlalwani.com/post/reusing-existing-browser-session-selenium-java/.
Este fragmento de código permite reutilizar correctamente la instancia del navegador existente y, al mismo tiempo, evita levantar el navegador duplicado. Encontrado en el blog de Tarun Lalwani.
from selenium import webdriver
from selenium.webdriver.remote.webdriver import WebDriver
# executor_url = driver.command_executor._url
# session_id = driver.session_id
def attach_to_session(executor_url, session_id):
original_execute = WebDriver.execute
def new_command_execute(self, command, params=None):
if command == "newSession":
# Mock the response
return {'success': 0, 'value': None, 'sessionId': session_id}
else:
return original_execute(self, command, params)
# Patch the function before creating the driver object
WebDriver.execute = new_command_execute
driver = webdriver.Remote(command_executor=executor_url, desired_capabilities={})
driver.session_id = session_id
# Replace the patched function with original function
WebDriver.execute = original_execute
return driver
bro = attach_to_session('http://127.0.0.1:64092', '8de24f3bfbec01ba0d82a7946df1d1c3')
bro.get('http://ya.ru/')