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 oid
s 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
?