supongamos que un cliente inicia una sesión de selenio en un servidor RC, pero a la mitad de la sesión el cliente "se fue". El navegador permanecerá abierto y, con el tiempo, después de suficientes sesiones de este tipo, habrá suficientes navegadores "huérfanos" para ralentizar la computadora.Cómo cerrar un navegador en un servidor RC de selenio que perdió su cliente
Respuesta
Cualquier instancia del navegador tiene un session_id que puede almacenar. Python ejemplo:
>>> import selenium
>>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar")
>>> browser.start()
>>> browser.sessionId
u'b4ad1f1d624e44d9af4200b26d7375cc'
Por lo tanto, si almacena estos sessionId en un archivo cuando se inicia el ensayo y posteriormente retirarlo Cuando los análisis de extremos, tendrá un archivo de registro con sesiones de pruebas que no terminan correctamente.
Ahora, utilizando cron, o cualquier ejecución regular, se puede leer ese archivo, iterar sobre los SessionIDs almacenados en él y abra la siguiente URL (usando un navegador o incluso una biblioteca de http para su lenguaje de programación):
http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete
Eso debería hacer el truco.
Editar: Encontré esta pregunta tan interesante que creó una publicación en mi blog sobre la solución. Si eres un chico serpiente pitón le resultará interesante: http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc
Buen ejemplo Santi – AutomatedTester
Para los navegadores Firefox, puede encontrar el sessionid revisando el nombre de la carpeta del perfil. En un sistema unixlike, 'ps ax | grep firefox-bin' devolverá algo así como '12345? 1:00/usr/lib/iceweasel/firefox-bin -profile/tmp/customProfileDir
Usted también puede simplemente matar el proceso:
de Windows:
taskkill /f /im iexplore.exe
taskkill /f /im firefox.exe
* nix:
for i in `ps -A | grep firefox | awk '{print $1}'`; do kill -9 $i; done
esto matará a todos los firefox, no solo al "zombie". entonces, si, por ejemplo, ejecuta dos rc en la misma máquina (no tan improbable), podría terminar destruyendo un ff que fue utilizado por el otro RC. – olamundo
>>> browser.stop()
Hace lo mismo que Santi explica arriba.
- 1. Prueba de selenio sin navegador
- 2. ¿Cómo escribir un servidor retorcido que también es un cliente?
- 3. Equivalente de isTextPresent en Selenio 1 (Selenio RC) en Selenio 2 (WebDriver)
- 4. Proxy para controlador de selenio rc en java
- 5. ¿Puede un servidor http detectar que un cliente ha cancelado su solicitud?
- 6. ¿Hay un cliente de websocket sin navegador para Node.js que no necesita usar un navegador?
- 7. ¿Cómo cerrar el navegador con Capybara?
- 8. ¿Debería un servidor adherirse a la conexión HTTP: cerrar el encabezado enviado desde un cliente?
- 9. ¿Cómo ejecutar SWF sin un navegador (en un servidor Linux)?
- 10. ¿Puede un cliente IRC basado en navegador comunicarse directamente con un servidor IRC?
- 11. Detectar navegador Cerrar en Asp.net
- 12. ¿Cómo cerrar la ventana emergente en funcionamiento de selenio?
- 13. Limpieza del servidor después de que un cliente se desconecta
- 14. ¿Cómo configuro mi navegador web de desarrollo en VS2010 RC?
- 15. cómo comunicar entre dos instancias node.js, un cliente, un servidor
- 16. ¿Su lenguaje de programación en un navegador (es decir, Javascript)?
- 17. Python cliente/servidor pregunta
- 18. Selenio: No se puede obtener navegador
- 19. Prueba con un controlador de selenio en Java sin abrir ningún navegador
- 20. DCOM: ¿Cómo cerrar la conexión en el servidor en el bloqueo del cliente?
- 21. Linux: Impedir que se detenga un proceso en segundo plano después de cerrar el cliente SSH
- 22. cómo cerrar el servidor cherrypy?
- 23. Comprobando si un cliente está instalado en el navegador del cliente
- 24. Cliente Node.js para un servidor socket.io
- 25. ¿Comunicación del navegador al navegador sin un servidor?
- 26. ¿Cómo puedo usar Selenium RC para verificar nuestros Redireccionamientos del lado del servidor (301, 302)?
- 27. Selenium WebDriver cómo cerrar el navegador emergente
- 28. ¿Cómo detectar una desconexión del cliente utilizando un cliente/servidor de canalización con nombre?
- 29. ¿Cómo cerrar un ExecutorService?
- 30. Cómo ejecutar el controlador web de selenio detrás de un servidor proxy que necesita autenticación en python
Debe aceptar una respuesta una vez que cree que su pregunta ha sido respondida ... – Santi
En la nota similar, ¿podría volver a utilizar las sesiones existentes del navegador? :) – Nayn
@Nayn - ¡sí se puede! :) Hay un argumento que puede enviar el selenio RC cuando se inicia: -browserSessionReuse – olamundo