Verifique o elemento presente e o comando waitFor em Selenium
โก Resumo Inteligente
Verificar se o elemento estรก presente e aguardar comandos em Selenium O IDE confirma se uma pรกgina contรฉm os elementos e o texto que um teste espera e pausa a reproduรงรฃo atรฉ que uma condiรงรฃo dinรขmica se torne verdadeira antes de executar a prรณxima etapa.
um gravado Selenium IDE O script clica e digita, mas por si sรณ nunca decide se o aplicativo se comportou corretamente. Duas famรญlias de comandos fazem esse trabalho: verificar comandos, que verificam o estado da pรกgina, e esperar comandos, que retรชm a execuรงรฃo atรฉ que a pรกgina esteja pronta para ser verificada.
โ ๏ธ Uma observaรงรฃo sobre as versรตes: As capturas de tela abaixo sรฃo do original. Firefox-plugar Selenium IDE, que nรฃo รฉ mais distribuรญda, e eles usam seus nomes Selenese em camelCase. A IDE atual รฉ o Chrome, Firefox e Borda extensรฃo do navegadorO comportamento descrito aqui ainda se aplica, mas vรกrios nomes de comandos foram alterados โ um mapaping A tabela aparece mais adiante neste artigo, e todos os comandos e capturas de tela originais sรฃo preservados exatamente como foram publicados.
Verifique a presenรงa de um elemento
Podemos usar os dois comandos a seguir para verificar a presenรงa de um elemento:
- verificarElementPresent โ retorna TRUE se o elemento especificado foi ENCONTRADO na pรกgina; FALSO caso contrรกrio
- verificarElementNotPresent โ retorna TRUE se o elemento especificado NรO FOI ENCONTRADO em nenhum lugar da pรกgina; FALSO se estiver presente.
Ambos os comandos recebem um elemento. localizador no Target campo โ um id, um nome, um seletor CSS, um texto de link ou um XPath expressรฃo โ e nenhuma delas precisa de um valor.
O script de teste abaixo verifica se a caixa de texto Nome de usuรกrio estรก presente dentro do Mercury Pรกgina inicial do Tours enquanto a caixa de texto do Primeiro Nome nรฃo รฉ. A caixa de texto do Primeiro Nome รฉ na verdade um elemento presente na pรกgina de Registro de Mercury Passeios, nรฃo na pรกgina inicial.
Porque estes sรฃo verificar comandos em vez de afirmar Se os comandos falharem, o erro รฉ registrado no log, mas as etapas restantes continuam sendo executadas. Essa distinรงรฃo serรก abordada em detalhes mais adiante.
Verifique a presenรงa de um determinado texto no comando em Selenium
Verificar se um elemento existe nem sempre รฉ suficiente โ um teste geralmente precisa confirmar as palavras exibidas ao usuรกrio. Dois comandos de texto resolvem esse problema.
- verificarTextPresent โ retorna TRUE se a sequรชncia de texto especificada foi ENCONTRADA em algum lugar da pรกgina; FALSO caso contrรกrio
- verificarTextNotPresent โ retorna TRUE se a sequรชncia de texto especificada NรO FOI ENCONTRADA em nenhum lugar da pรกgina; FALSO se foi encontrado
Lembre-se de que esses comandos diferenciam maiรบsculas de minรบsculas.
O registro abaixo mostra a mesma pรกgina verificada duas vezes com duas grafias diferentes da mesma frase.
No cenรกrio acima, โAtlanta to Las Vegasโ foi tratado de forma diferente de โatlanta to Las Vegasโ porque a letra โAโ de โAtlantaโ estava em maiรบscula no primeiro caso, enquanto em minรบscula no segundo. Quando o comando verifyTextPresent foi usado em cada um deles, um foi aprovado, enquanto o outro falhou.
Verifique a posiรงรฃo especรญfica de um elemento
Defeitos de layout raramente afetam um localizador, portanto, verificaรงรตes de presenรงa nรฃo os detectam. Os comandos de posiรงรฃo resolvem esse problema.
Selenium O IDE indica a posiรงรฃo de um elemento medindo (em pixels) a que distรขncia ele estรก da borda esquerda ou superior da janela do navegador.
- verificarElementPositionLeft โ verifica se o nรบmero especificado de pixels corresponde ร distรขncia do elemento ร borda esquerda da pรกgina. Isso retornarรก FALSE se o valor especificado nรฃo corresponder ร distรขncia da borda esquerda.
- verificarElementPositionTop โ verifica se o nรบmero especificado de pixels corresponde ร distรขncia do elemento da borda superior da pรกgina. Isso retornarรก FALSE se o valor especificado nรฃo corresponder ร distรขncia da borda superior.
O script abaixo registra os deslocamentos de pixel esperados na coluna Valor.
Trate esses dois comandos com cuidado. O deslocamento em pixels varia de acordo com o tamanho da janela, o nรญvel de zoom e as fontes instaladas; portanto, um valor fixo que funciona em uma mรกquina pode falhar em outra.
Aguarde comandos em Selenium
Um comando de verificaรงรฃo sรณ pode inspecionar o que jรก estรก na tela, portanto, uma verificaรงรฃo executada muito cedo falha, mesmo que o aplicativo esteja funcionando. Os comandos de espera resolvem esse problema de sincronizaรงรฃo.
A seguir estรฃo os tipos de comandos de espera em Selenium
Comandos andWait
Esses sรฃo comandos que aguardarรฃo o carregamento de uma nova pรกgina antes de passar para o prรณximo comando.
Exemplos sรฃo
- clique e espere
- digiteAndWait
- selecioneAndWait
Cada um deles รฉ um comando de aรงรฃo comum com o sufixo AndWait anexado, como mostra a etapa gravada abaixo.
Comandos waitFor
Estes sรฃo comandos que esperam que uma condiรงรฃo especificada se torne verdadeira antes de prosseguir para o prรณximo comando (independentemente do carregamento de uma nova pรกgina). Esses comandos sรฃo mais apropriados para serem usados โโem sites dinรขmicos baseados em AJAX que alteram valores e elementos sem recarregar a pรกgina inteira. Exemplos incluem:
- espereForTitle
- waitForTextPresent
- espereForAlert
Considere o cenรกrio do Facebook abaixo.
Podemos usar uma combinaรงรฃo de โclickโ e โwaitForTextPresentโ para verificar a presenรงa do texto โInformando seu aniversรกrioโ.
Nรฃo podemos usar clickAndWait porque nenhuma pรกgina foi carregada ao clicar no link โPor que preciso informar minha data de nascimento?โ link. Se fizermos isso, o teste falharรก
A mesma regra se aplica a qualquer conteรบdo injetado por script em vez de por navegaรงรฃo, e รฉ por isso que Telas controladas por AJAX Quase sempre รฉ necessรกrio usar waitFor em vez de andWait.
Comandos Assert vs Verify vs waitFor em Selenium IDE
Iniciantes frequentemente escolhem a famรญlia errada e depois se perguntam por que um pacote de software para no primeiro defeito, ou por que relata vinte falhas que todos... trace voltamos ao um. Os trรชs prefixos respondem a trรชs perguntas diferentes.
| Prefixo | O que ele faz | Em caso de falha | Melhor usado para |
|---|---|---|---|
| afirmar | Verifica uma condiรงรฃo imediatamente | Registra a falha e interrompe o caso de teste. | Prรฉ-condiรงรตes โ um login que deve ser bem-sucedido antes que qualquer outra coisa faรงa sentido. |
| verificar | Verifica uma condiรงรฃo imediatamente | Registra a falha e continua com o prรณximo comando. | Verificaรงรตes independentes, como vรกrias etiquetas em uma pรกgina de confirmaรงรฃo. |
| aguarde | Realizar pesquisas atรฉ que a condiรงรฃo se torne verdadeira. | Registra a falha assim que o tempo limite expira e, em seguida, continua. | Qualquer coisa que apareรงa com atraso โ respostas AJAX, indicadores de carregamento, diรกlogos. |
Um padrรฃo prรกtico combina os trรชs: verificar a pรกgina em que vocรช chegou, aguardar o elemento que chega de forma assรญncrona e, em seguida, verificar cada campo individualmente. Fazer isso nessa ordem significa que uma navegaรงรฃo quebrada interrompe o teste prematuramente, enquanto vรกrias inconsistรชncias visuais sรฃo relatadas em uma รบnica execuรงรฃo. A mesma disciplina se aplica a Selenium testes escritos em cรณdigo, onde os equivalentes sรฃo asserรงรตes rรญgidas, asserรงรตes flexรญveis e esperas explรญcitas.
Comandos de verificaรงรฃo e espera no estado atual Selenium IDE
O FirefoxO plugin IDE que gerou as capturas de tela acima foi descontinuado e o conjunto de comandos foi reconstruรญdo para a extensรฃo de navegador atual. Vรกrios nomes em Selenese permaneceram, alguns foram renomeados e outros foram removidos. A tabela abaixo mapeia os comandos usados โโneste artigo para seus equivalentes atuais, retirados do manual oficial. Selenium Referรชncia de comandos da IDE.
| Comando Selenese Legado | Comando no IDE atual |
|---|---|
| verificarElementPresent | verificar elemento presente |
| verificarElementNotPresent | verificar elemento nรฃo presente |
| verificarTextPresent | Verificar texto (com escopo limitado a um localizador de elemento, nรฃo ร pรกgina inteira) |
| verificarTextNotPresent | verificar se nรฃo รฉ texto (com escopo para um localizador de elemento) |
| verificarTรญtulo | verificar tรญtulo |
| verificarPosiรงรฃoElementoEsquerda / verificarPosiรงรฃoElementoSuperior | Nรฃo hรก equivalente โ as afirmaรงรตes de posiรงรฃo foram abandonadas. |
| Clique e espere, digite e espere, selecione e espere | Sem o sufixo AndWait โ o comando open jรก aguarda o carregamento da pรกgina. |
| waitForElementPresent | Aguarde a presenรงa do elemento, com um tempo de espera em milissegundos. |
| espereForAlert | Exibir alerta ou verificar texto de alerta apรณs a exibiรงรฃo da caixa de diรกlogo |
Duas diferenรงas sรฃo cruciais no trabalho diรกrio. Primeiro, os comandos de espera atuais โ aguardar elemento presente, aguardar elemento visรญvel, aguardar elemento editรกvel e seus inversos โ exigem um tempo de espera explรญcito em milissegundos, de modo que uma etapa lenta nรฃo precisa mais compartilhar um tempo limite global. Segundo, a busca de texto em toda a pรกgina foi removida: verificar se o texto precisa de um localizador, o que geralmente produz uma verificaรงรฃo mais precisa.
Erros comuns com os comandos Verify e waitFor
A maioria dos problemas relatados com esses comandos nรฃo sรฃo defeitos da IDE. A lista abaixo abrange as falhas mais frequentes e suas respectivas soluรงรตes.
- O elemento existe, mas a verificaรงรฃo ainda falha. Presenรงa e visibilidade sรฃo estados diferentes. Um elemento oculto por uma regra CSS ainda estรก presente no DOM, portanto, combine a verificaรงรฃo de presenรงa com a espera atรฉ que o elemento esteja visรญvel quando o teste depender de o usuรกrio realmente vรช-lo.
- A verificaรงรฃo de texto falha em expressรตes que parecem idรชnticas. Espaรงos nรฃo separรกveis, espaรงos em branco ร direita e apรณstrofos curvos copiados de um documento de design impedem a correspondรชncia exata. Digite novamente a sequรชncia esperada manualmente em vez de colรก-la.
- Um comando de espera expirou em uma pรกgina que claramente havia carregado. O elemento geralmente estรก dentro de um iframe. Execute `select frame` primeiro; caso contrรกrio, o localizador serรก avaliado no documento errado.
- O clickAndWait trava em um aplicativo de pรกgina รบnica. Nenhuma navegaรงรฃo ocorre, portanto nรฃo hรก nada para esperar. Substitua isso por um clique seguido do comando waitFor apropriado.
- A verificaรงรฃo de posiรงรฃo รฉ bem-sucedida localmente, mas falha no servidor de compilaรงรฃo. O tamanho da tela e a renderizaรงรฃo da fonte podem variar. Prefira uma verificaรงรฃo de presenรงa ou de texto, ou defina um tamanho de janela explรญcito no inรญcio do teste.
- Todo o conjunto para na primeira incompatibilidade. Um comando assert foi registrado onde era esperado um comando verify. Altere o prefixo e a execuรงรฃo reportarรก todas as falhas em vez de apenas a primeira.
Uma vez que um roteiro sobreviva a essas armadilhas, o prรณximo passo geralmente รฉ... Armazene valores de tempo de execuรงรฃo em variรกveis. Assim, as verificaรงรตes comparam com dados reais em vez de sequรชncias de caracteres prรฉ-definidas.






