Comment puis-je sélectionner uniquement les éléments visibles à l'aide de XPath?

J'ai un GWT application pour laquelle je suis en train d'écrire quelques tests à l'aide de Le sélénium.

Je suis à l'aide de XPath pour identifier les éléments sur la page pour les tests. À l'aide de id ne fonctionne pas comme le id valeurs sont générées automatiquement par GWT et peut changer. Les choses ont commencé à aller bien quand j'ai vu que je pouvais trouver les boutons par leurs étiquettes comme suit:

//button[.='OK']

Cependant, quand j'ai commencé l'exécution de plusieurs tests, j'ai commencé à avoir des problèmes. J'ai réalisé que le problème a été de toutes les différentes "pages" de l'application GWT est généré par le Javascript restent dans le code HTML de caché <div> éléments. Cela signifiait mon Sélénium tests ont été parfois cliquant sur les boutons cachés au lieu du bouton visible dans la vue actuelle.

L'examen de l'HTML avec Firebug, il semble que GWT cache la <div> éléments en ajoutant display: none à leur style attribut. Cela signifie que je peux trouver tous les renseignements cachés OK boutons comme suit:

//div[contains(@style,'display: none')]//button[.='OK']

Cela permettra de trouver tous les cachés boutons OK, j'.e les boutons qui ont un ancêtre <div> qui est masqué par le fait d'avoir display: none dans le style.

Ma question est: comment puis-je utiliser XPath pour trouver uniquement la partie visible boutons OK? Comment puis-je trouver les boutons qui n'ont pas d'ancêtre <div> éléments avec display: none dans le style?

InformationsquelleAutor Dave Webb | 2009-03-16