Saltar al contenido

¿Puede Selenium interactuar con una sesión de navegador existente?

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.

  1. abrir un controlador
driver = webdriver.Firefox()  #python
  1. 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'
  1. 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/')
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *