Questão nº 44
Questão de Tecnologia da Informação · FCC TRT-1 2025 (nº 44)
O time de TI de um Tribunal Regional do Trabalho que está desenvolvendo uma aplicação web configurou o Selenium WebDriver para realizar testes de funcionalidades no navegador Chrome. Durante os testes, identificaram que o script falha ao tentar interagir com o botão de "Enviar", apresentando o erro NoSuchElementException. O desenvolvedor analisou o código e percebeu que o botão é carregado dinamicamente após a conclusão de uma animação. Nesse contexto, a abordagem mais adequada que o time deve adotar para resolver o problema e garantir que o botão seja corretamente identificado e clicado nos testes é
- Aconfigurar o WebDriver para ignorar exceções e continuar a execução.
- Batualizar o Selenium WebDriver e o Selenium IDE para as versões mais recentes.
- Cimplementar Implicit Wait no script para executar após o carregamento do botão.
- Daumentar o tempo de execução do script para garantir que o botão seja carregado.
- Eutilizar Explicit Wait para aguardar a presença do botão na página antes de interagir. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Quando um elemento de uma página web (como um botão) aparece na tela somente depois de alguma ação ou animação, ele é considerado carregado dinamicamente. O Selenium precisa "esperar" que esse elemento esteja realmente presente e interativo antes de tentar usá-lo, caso contrário, ele não o encontrará e o teste falhará.
- (A) Incorreta: Configurar o WebDriver para ignorar exceções é uma prática perigosa que mascararia o problema em vez de resolvê-lo, podendo levar a testes que parecem passar, mas não validam a funcionalidade corretamente.
- (B) Incorreta: Atualizar as ferramentas (WebDriver e Selenium IDE) pode trazer melhorias de desempenho ou correções de bugs, mas não resolve intrinsecamente um problema de sincronização entre o script de teste e o carregamento dinâmico de elementos na página.
- (C) Incorreta: O Implicit Wait (espera implícita) define um tempo máximo que o WebDriver deve esperar por um elemento antes de lançar um NoSuchElementException para qualquer elemento que ele tente encontrar. Embora ajude em alguns casos de carregamento dinâmico, ele se aplica globalmente a todas as chamadas
findElementefindElementse não é ideal para esperar por uma condição específica (como um botão se tornar clicável) em um elemento particular, sendo menos preciso e eficiente que o Explicit Wait para esse cenário. Armadilha da banca: Esta alternativa é tentadora porque o Implicit Wait parece resolver problemas de carregamento, mas ele não é a abordagem mais adequada ou granular para uma condição específica de um elemento. - (D) Incorreta: Aumentar o tempo de execução do script, geralmente com
Thread.sleep(), é uma solução ineficiente e não confiável. Ela faz o script pausar por um tempo fixo, o que pode ser muito longo (desperdiçando tempo) ou muito curto (se a animação demorar mais do que o esperado), levando a falhas intermitentes. - (E) Correta: O Explicit Wait (espera explícita) é a abordagem mais robusta e recomendada para este cenário. Ele permite que o script espere por uma condição específica (como a presença, visibilidade ou clicabilidade de um elemento) por um tempo máximo definido. Usando
WebDriverWaiteExpectedConditions, o Selenium verifica a condição repetidamente até que ela seja atendida ou o tempo limite expire, garantindo que o botão esteja pronto para interação de forma eficiente e confiável.
Fonte: FCC TRT-1 2025 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 004). Reproduzida para fins de estudo.