es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reabrir el navegador Selenium en un bucle: Python

Estoy tratando de cerrar el navegador y volver a abrirlo después de un bucle.

class Bot():

driver = webdriver.Chrome(options=chrome_options)

    def __init__(self):
        self.openyoutube()
        self.quitbrowser()

    def openyoutube(self):
        self.driver.get('https://www.youtube.com')
        sleep(5)

    def quitbrowser(self):
        self.driver.quit()



def main():
    while True: 
        my_bot = Bot()
        sleep(15)

if __name__ == '__main__':
    main()

Pero una vez que intenta comenzar de nuevo, arroja este error:

raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host=’localhost’,
port=64578): Max retries exceeded with url:
/session/f7fcdfe14c3e2c75d530b3cbf70348d2/url (Caused by
NewConnectionError(‘<urllib3.connection.httpconnection object=”” at=”” >=”” 0x7fb6d71f8250=””>: Fallo al establecer una nueva conexión: [Errno 61]
Conexión rechazada’))</urllib3.connection.httpconnection>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que el navegador no se cierra correctamente antes de iniciar una nueva instancia en el bucle. Para solucionar esto, podemos modificar la clase Bot para incluir un método que cierre y reinicie el navegador antes de cada iteración del bucle:

    class Bot():
    
        def __init__(self):
            self.driver = webdriver.Chrome(options=chrome_options)
            self.openyoutube()
    
        def openyoutube(self):
            self.driver.get('https://www.youtube.com')
            sleep(5)
    
        def quitbrowser(self):
            self.driver.quit()
    
        def restartbrowser(self):
            self.quitbrowser()
            self.driver = webdriver.Chrome(options=chrome_options)
    
    
    def main():
        while True: 
            my_bot = Bot()
            sleep(15)
            my_bot.quitbrowser()
            my_bot.restartbrowser()
    
    if __name__ == '__main__':
        main()
    

    Aquí, hemos añadido un método restartbrowser() a la clase Bot que llama a quitbrowser() para cerrar la instancia actual del navegador, y luego crea una nueva instancia usando webdriver.Chrome(). En la función main(), llamamos a estos dos métodos después de cada iteración del bucle para cerrar y reiniciar correctamente el navegador. Esto debería evitar que se produzca el error.

Comments are closed.