Recientemente comenzamos a probar nuestra aplicación basada en Django utilizando Selenium. Las pruebas funcionan bien en Linux, pero algunas fallan en Mac OS X. Estamos usando Firefox como el navegador en ambos casos, y nos llevó un tiempo (y algo de suerte) descubrir que la diferencia importante entre los dos casos es si FF se ejecuta como la aplicación en primer plano o como una ventana de fondo. Esto es lo que sucede en Linux:Cómo forzar a Firefox a ser la aplicación en primer plano cuando se prueba con Selenium en Mac OS X
- Selenium le dice a Firefox que vaya a la página de registro de un usuario.
- Selenium rellena el nombre de usuario y dirección de correo electrónico no válida.
- Selenium cambia el foco del campo de la dirección de correo electrónico a otro campo en la misma página (sucede que es el cuadro de búsqueda, pero eso no es importante --- todo lo que importa es el evento de cambio de foco).
- El código de validación de Javascript en la página web detecta que la dirección de correo electrónico no es válida e inserta un mensaje de error en la página.
- Selenium detecta ese mensaje de error y marca la prueba como aprobada.
Cuando se corre en Mac OS X, sin embargo, el paso # 4 no sucede a menos que primer plano manualmente la ventana de Firefox, mientras se ejecuta la prueba --- si lo dejamos en el fondo (que es donde aparece por defecto), el Javascript en el navegador no obtiene el evento de cambio de foco, por lo que el mensaje de error nunca se inserta en el DOM de la página, por lo que Selenium agota el tiempo de espera y la prueba falla.
¿Podemos forzar a Selenium a poner en primer plano el navegador cuando se ejecutan las pruebas, para que nuestro Javascript obtenga los eventos que nosotros queremos? ¿Si es así, cómo?
¿Puede publicar el código exacto que está utilizando? – Amey