Tengo una aplicación GWT para la cual intento escribir algunas pruebas usando Selenium.¿Cómo selecciono solo elementos visibles usando XPath?
Estoy usando XPath para identificar los elementos en la página para las pruebas. El uso de id
no funcionará ya que los valores id
son generados automáticamente por GWT y pueden cambiar. Las cosas empezaron a ir bien cuando me di cuenta de que podría encontrar los botones de las etiquetas de la siguiente manera:
//button[.='OK']
Sin embargo, cuando empecé ejecución de varias pruebas empecé a tener problemas. Me di cuenta de que el problema era que todas las diferentes "páginas" de la aplicación GWT una vez generadas por el Javascript permanecían en el HTML en los elementos ocultos <div>
. Esto significaba que mis pruebas de Selenium a veces hacían clic en los botones ocultos en lugar del botón visible en la vista actual.
Examinando el HTML con Firebug, parece que GWT oculta los elementos <div>
mediante la adición de display: none
a su atributo style
. Esto significa que puedo encontrar todos los botones OK ocultos de la siguiente manera:
//div[contains(@style,'display: none')]//button[.='OK']
Esto encontrará todos los botones OK ocultos, es decir los botones que tienen un antepasado <div>
que está oculto por tener display: none
en el style
.
Mi pregunta es: ¿cómo uso XPath para encontrar solo los botones OK visibles? ¿Cómo puedo encontrar los botones que no tienen elementos ancestros <div>
con display: none
en el style
?
Eso es todo. Muchas gracias. –
El último no funciona si hay otro div en el dom-tree que no está oculto:
– Fortega@Fortega y se dice en el texto alrededor de él –