Pular para o conteúdo
SDETRole
SDETRole

Glossário · Automação de UI

Espera implícita (implicit wait)

Em inglês: Implicit wait

Também chamado de: esperas implícitas, implicitlyWait

Definição

Uma configuração global do Selenium que faz toda chamada de findElement continuar procurando por até um tempo definido antes de lançar NoSuchElementException.

Uma espera implícita diz ao WebDriver para continuar procurando um elemento por um tempo fixo antes de desistir. Você a configura uma vez por sessão do driver e ela vale para todas as chamadas de findElement e findElements a partir daí. Ela é “implícita” porque a espera acontece silenciosamente dentro da busca do elemento, e não em um ponto que você escolhe. O padrão é zero.

Exemplo (Selenium 4, Java)

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

// Polls for up to 5 seconds for the element to exist in the DOM
WebElement email = driver.findElement(By.id("email"));

// findElements also waits up to 5 seconds, then returns an empty list
List<WebElement> errors = driver.findElements(By.cssSelector(".error"));

No Selenium 4, a sobrecarga com Duration é a que deve ser usada. O antigo implicitlyWait(long, TimeUnit) está deprecated.

Diferença em relação à espera explícita

Espera implícita Espera explícita
Escopo Toda busca de elemento na sessão Uma condição em um ponto do teste
Pelo que espera O elemento existir no DOM Qualquer condição: visível, clicável, texto presente, sumiu
Onde é configurada Uma vez, no driver Inline, com WebDriverWait

A espera implícita não espera o elemento ficar visível ou habilitado. Se o botão existe mas ainda está desabilitado, o findElement retorna imediatamente e o clique pode falhar ou não fazer nada.

Por que muitos times a evitam

  • Misturá-la com esperas explícitas é imprevisível. A documentação do Selenium alerta contra combinar as duas, porque as buscas dentro de uma espera explícita também aplicam o timeout implícito.
  • Verificar que algo não existe fica lento. findElements(...).isEmpty() espera o timeout implícito inteiro toda vez que o elemento, corretamente, não está lá.
  • Ela esconde a intenção. Quem lê o código não consegue saber quais passos realmente precisam esperar.

A recomendação comum é deixar a espera implícita em zero e usar esperas explícitas onde forem necessárias. Se uma suíte legada depende dela, mantenha-a curta e não acrescente esperas explícitas por cima sem removê-la.

Digite para buscar em todo o SDETRole.

Busca de texto completo com Pagefind · roda no seu navegador Abrir página de busca →