Como seleciono apenas elementos visíveis usando o XPath?

Eu tenho um GWT aplicativo para o qual estou tentando escrever alguns testes usandoSelêni.

Estou usando o XPath para identificar os elementos na página para os testes. Usandoid não funcionará como oids valores @ são gerados automaticamente pelo GWT e podem mudar. As coisas começaram a correr bem quando percebi que podia encontrar botões pelos rótulos da seguinte forma:

//button[.='OK']

No entanto, quando comecei a executar vários testes, comecei a ter problemas. Percebi que o problema era que todas as diferentes "páginas" do aplicativo GWT, uma vez geradas pelo Javascript, permanecem no HTML em<div> elementos. Isso significava que meus testes do Selenium às vezes clicavam nos botões ocultos, em vez do botão visível na exibição atua

Examinando o HTML com Firebug, parece que o GWT oculta o<div> elementos adicionandodisplay: none para o seustyle attribute. Isso significa que posso encontrar todos os botões OK ocultos da seguinte maneira:

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

Isto encontrará todos os botões ocultos OK, ou seja, os botões que têm um ancestral<div> que está oculto por terdisplay: none nostyle.

Minha pergunta é: como uso o XPath para encontrar apenas os botões OK visíveis? Como encontro os botões que não têm ancestral<div> elementos comdisplay: none nostyle?

questionAnswers(4)

yourAnswerToTheQuestion