Middle
Nome alguns tipos de espera no Selenium e explique-os.
sobes.tech IA
Resposta da IA
-
Esperas implícitas (Implicit Waits)
- São configuradas uma vez para toda a sessão do WebDriver.
- O WebDriver aguardará um determinado período de tempo antes de lançar uma exceção
NoSuchElementExceptionao procurar um elemento. - O tempo de espera aplica-se a cada chamada a
findElement(s). - Se o elemento for encontrado mais cedo, o WebDriver não aguardará até ao final.
-
Esperas explícitas (Explicit Waits)
- Aplicam-se a uma condição específica para um elemento concreto.
- O WebDriver aguardará até que a condição seja satisfeita durante um tempo máximo definido.
- Se a condição for satisfeita mais cedo, o código continua.
- Se não for satisfeita dentro do tempo máximo, é lançada uma exceção
TimeoutException. - Geralmente são usadas com a classe
WebDriverWaiteExpectedConditions.
// Exemplo de espera explícita WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton"))); -
Esperas flexíveis (Fluent Waits)
- Uma versão mais avançada de Esperas explícitas.
- Permitem definir não só o tempo máximo de espera, mas também:
- A frequência de verificação da condição (intervalo de sondagem).
- Os tipos de exceções a ignorar durante a espera.
// Exemplo de espera flexível Wait<WebDriver> wait = new FluentWait<>(driver) .withTimeout(Duration.ofSeconds(30)) .pollingEvery(Duration.ofSeconds(5)) .ignoring(NoSuchElementException.class); WebElement element = wait.until(driver -> driver.findElement(By.id("myElement")));
Tabela resumo:
| Tipo de espera | Área de aplicação | Flexibilidade | Tratamento de exceções | Utilização |
|---|---|---|---|---|
| Espera implícita | Toda a sessão WebDriver | Baixa (tempo fixo) | Automática | Tempo de espera geral para todas as buscas |
| Espera explícita | Condição específica para um elemento | Alta (condição definida) | Manual (TimeoutException) |
Espera por um estado específico do elemento |
| Espera flexível | Condição específica para um elemento | Muito alta (intervalo, ignorar) | Manual (TimeoutException) |
Configuração mais fina da espera |