Inicio > Java, Programación, Web > Selenium, JSF, Composite Components y los IDs dinámicos

Selenium, JSF, Composite Components y los IDs dinámicos


selenium

 

Una de las herramienta para hacer testing en web más utilizada es Selenium IDE, una serie de herramientas y librerías para hacer tests usando el navegador para rellenar formularios, comprobar textos…

Para “guiarse”, Selenium usa distintos atributos de los elementos HTML para localizarlos, como los IDs, sin embargo, en JSF estos pueden cambiar si no se definen todos los IDs de los padres de un elemento, generando cosas como: id=”j_45:j_21:username”, y estos números son generados dinámicamente, por lo que podrían cambiar entre un test y otro, obligándonos a comprobar cada ID nuevo cada vez que probamos el test (una locura).

Si bien usando prependId=”false” evitamos que el form añada su ID al del input, esto no es posible en los Composite Components.

Una solución puede ser darle un ID a cada composite, y quedaría todo fijo, en muchos casos es una tarea bastante engorrosa para simplemente unos tests.

¿Solución? Selectores CSS

Para el ejemplo anterior Selenium usaría el siguiente selector:


id=j_45:j_21:username

Pero podremos cambiarlo por


css=[id$=\:username]

De esta forma, solo comprobará el final del ID (que es estático).

Para evitar tener que hacerlo a mano, basta buscar un editor con posibilidad de reemplazar usando Expresiones Regulares con el siguiente patrón id=.*:(.*)</td> a css=[id$=\:$1]</td>

 

Anuncios
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: