Cómo selecciono solo elementos visibles con XPath?

Tengo un GWT aplicación para la que estoy tratando de escribir algunas pruebas usandoSeleni.

Estoy usando XPath para identificar los elementos en la página para las pruebas. Utilizandoid no funcionará comoidos valores @ son generados automáticamente por GWT y pueden cambiar. Las cosas comenzaron a ir bien cuando me di cuenta de que podía encontrar botones por sus etiquetas de la siguiente manera:

//button[.='OK']

Sin embargo, cuando comencé a ejecutar varias pruebas comencé 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, permanecen en el HTML oculto<div> elementos. Esto significaba que mis pruebas de selenio a veces hacían clic en botones ocultos en lugar del botón visible en la vista actual.

Examen del HTML con Firebug, parece que GWT oculta la<div> elementos agregandodisplay: none a sustyle atributo. 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 ancestro<div> que se oculta al tenerdisplay: none en elstyle.

Mi pregunta es: ¿cómo uso XPath para encontrar solo los botones OK visibles? ¿Cómo encuentro los botones que no tienen ancestro<div> elementos condisplay: none en elstyle?