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>
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:Aquí, hemos añadido un método
restartbrowser()
a la claseBot
que llama aquitbrowser()
para cerrar la instancia actual del navegador, y luego crea una nueva instancia usandowebdriver.Chrome()
. En la funciónmain()
, 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.