¿Cómo se prueban las páginas que requieren autenticación con Selenium?

Necesito probar una aplicación web usando Selenium. La aplicación es bastante común en su configuración: requiere iniciar sesión para que se exponga la mayor parte de la funcionalidad. Al cargar una página, si el usuario no está autenticado, lo redireccionará a un formulario de inicio de sesión y luego volverá a la página solicitada una vez que se proporcionen las credenciales.

¿Cuál es la forma habitual de solucionar esto con Selenium? Supongo que la gente no inicia sesión en todas las pruebas, ya que esto causaría una sobrecarga significativa en grandes conjuntos de pruebas. ¿Hay alguna forma de configurar una sesión en una prueba y luego usar la información de la cookie para pruebas posteriores, o hacer un inicio de sesión condicional (sin incurrir en una repetición masiva de código!)?

Estoy usando PHPUnit con Selenium ATM.

¡Gracias!

Gonzalo

preguntado el 16 de mayo de 11 a las 18:05

2 Respuestas

(Estoy usando C # + NUnit + Selenium RC)

La mayoría de las veces, cada prueba pasa por el formulario de inicio de sesión. Sin embargo, si estoy escribiendo una serie de pruebas que son muy cortas (<10 segundos cada una) y hay muchas, generalmente comparto la misma instancia del navegador entre las pruebas moviendo las llamadas de inicio \ cierre de selenio desde la Configuración \ Métodos TearDown a los métodos Test Fixture SetUp \ TearDown. Esto evita el costo de volver a autenticarse, así como el costo de iniciar un nuevo navegador cada vez. Estoy seguro de que puedes hacer algo similar con PHPUnit.

contestado el 17 de mayo de 11 a las 01:05

¿Crees que es una forma más fácil de crear un perfil para tus pruebas y luego completar la autenticación manualmente en ese perfil antes de que se activen las pruebas? ¿Para que cuando comiencen sus pruebas e invoquen este perfil, ya haya iniciado sesión? - AJ

@ AJ77 No lo sé realmente, uso Selenium para automatizar IE casi exclusivamente y, hasta donde yo sé, IE no es compatible con una función de "perfil" como la que estás sugiriendo. La mayoría de los sitios web usan algún tipo de cookie para almacenar sesiones ASP.NET (estoy probando una aplicación de formularios web). Las cookies de sesión caducan bastante rápido, por lo que incluso si pudiéramos almacenar cookies en todas las instancias del navegador, caducarían demasiado rápido para ser realmente útiles. - Wesley Wiser

Si esta es una autenticación http básica, puede usar el nombre de usuario / contraseña con la solicitud de url como se documenta en las Preguntas frecuentes de Selenium: http://wiki.openqa.org/display/SEL/Selenium+Core+FAQ#SeleniumCoreFAQ-HowdoIuseSeleniumtologintositesthatrequireHTTPbasicauthentication%28wherethebrowsermakesamodaldialogaskingforcredentials%29%3F

¿Cómo utilizo Selenium para iniciar sesión en sitios que requieren autenticación básica HTTP (donde el navegador crea un cuadro de diálogo modal solicitando credenciales)?

Use un nombre de usuario y contraseña en la URL, como se describe en RFC 1738: Tipo de prueba abierto http://myusername:myuserpassword@myexample.com/blah/blah/blah

Tenga en cuenta que en Internet Explorer esto no funcionará, ya que Microsoft ha desactivado los nombres de usuario / contraseñas en las URL en IE. Sin embargo, puede volver a agregar esa funcionalidad modificando su registro, como se describe en el artículo de KB vinculado. Establezca un DWORD "iexplore.exe" en 0 en HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_HTTP_USERNAME_PASSWORD_DISABLE.

Si no desea modificar el registro usted mismo, siempre puede usar Selenium Remote Control, que establece automáticamente esa clave de registro para usted a partir de la versión 0.9.2.

contestado el 16 de mayo de 11 a las 23:05

No, me refiero al mecanismo de sesión estándar basado en cookies que se utiliza en casi todos los sitios web hoy en día. - GomoX

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.