Nesta postagem, exploraremos os diferentes tipos de espera no Selenium 4, incluindo novas melhorias e práticas recomendadas para seu uso.
Tipos de espera no Selenium 4
Selenium 4 oferece três tipos principais de espera:
Vamos mergulhar em cada um deles!
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
Neste exemplo, o Selenium esperará até 10 segundos para que um elemento apareça antes de lançar uma NoSuchElementException. A espera se aplica a cada pesquisa de elemento durante toda a sessão.
Prós:
Fácil de implementar.
Adequado para projetos simples.
Contras:
Pode retardar a execução do teste, pois aplica a espera globalmente, mesmo que não seja necessário.
Pode levar a um comportamento de teste imprevisível quando usado com outros tipos de espera.
Exemplo de código:
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15)); WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("example")));
Neste exemplo, o WebDriver aguardará até 15 segundos até que o elemento fique visível. Se o elemento aparecer antes dos 15 segundos, a espera termina mais cedo.
Condições de espera explícitas comuns:
visibilidadeOfElementLocated()
elementToBeClickable()
presençaOfElementLocated()
alertIsPresent()
Prós:
Altamente personalizável e mais eficiente do que esperas implícitas.
Espera apenas quando condições específicas são necessárias.
Contras:
Requer mais código, o que pode aumentar a complexidade.
Gerenciar várias esperas explícitas pode ser complicado em projetos grandes.
WaitfluentWait = new FluentWait(driver) .withTimeout(Duration.ofSeconds(20)) .pollingEvery(Duration.ofMillis(500)) .ignoring(NoSuchElementException.class); WebElement element = fluentWait.until(driver -> driver.findElement(By.id("example")));
Aqui, o WebDriver verificará o elemento a cada 500 milissegundos e aguardará até 20 segundos antes de atingir o tempo limite. Ele também irá ignorar NoSuchElementException durante esse período.
Prós:
Oferece mais flexibilidade e controle sobre como a espera é tratada.
Permite a personalização de intervalos de pesquisa e tratamento de exceções.
Contras:
Pode ser mais complexo de configurar e entender.
A personalização excessiva pode levar a um código confuso e difícil de manter.
Melhorias nas esperas do Selenium 4
O Selenium 4 apresenta algumas melhorias, especialmente na forma como você gerencia as esperas:
Melhor sintaxe: Selenium 4 usa Duration em vez do TimeUnit anterior, tornando-o mais intuitivo e legível.
Localizadores relativos: agora você pode esperar por elementos em relação a outros elementos (por exemplo, à esquerda, próximo, etc.).
WebDriverWait aprimorado: a classe WebDriverWait no Selenium 4 é mais simplificada e mais fácil de usar com sintaxe moderna.
Práticas recomendadas para usar esperas no Selenium 4
Use esperas explícitas em vez de esperas implícitas: para melhor controle e desempenho, prefira esperas explícitas, especialmente em cenários complexos.
Evite misturar esperas implícitas e explícitas: usar ambas pode causar comportamento imprevisível e aumentar o tempo de espera.
Defina valores de tempo limite razoáveis: evite definir esperas desnecessariamente longas. Analise o comportamento do seu aplicativo para determinar os tempos de espera apropriados.
Use esperas fluentes para elementos dinâmicos: se os elementos forem altamente dinâmicos, considere usar esperas fluentes com intervalos de pesquisa para reduzir esperas desnecessárias.
Conclusão
Lidar com esperas de maneira eficaz no Selenium 4 é crucial para escrever testes automatizados estáveis e confiáveis. Compreender quando e como usar esperas implícitas, explícitas e fluentes pode melhorar muito a robustez do seu conjunto de testes. Com as melhorias no Selenium 4, você tem ferramentas ainda mais poderosas para gerenciar problemas de sincronização.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3