O Selenium permite 2 tipos de controle de espera: o explicito e o implícito.
Um tempo de espera explicito pode ser feito de 2 maneiras. Uma delas é usando Thread.sleep(). Basicamente, você determina um tempo fixo no qual alguma ação no teste precisa esperar antes de ser executada. A desvantagem desta técnica é que se a ação estiver pronta para ser executada antes do tempo fixado do Thread.sleep, o teste vai precisar aguardar sempre este tempo. Se este tempo ser ultrapassado, o teste falhará.
A outra forma de tempo explicito no Selenium é usar o WebDriverWait. É uma implementação disponível no Selenium que permite esperar por um determinado elemento na tela, com um tempo de espera máximo. Se o elemento for encontrado antes do tempo de espera máximo, o teste continua.
O tempo implícito é um tempo padrão de espera para qualquer elemento no DOM. Se desejamos escrever um texto em um campo, por exemplo, o Selenium obedecerá este tempo implícito antes de acusar um erro de que aquele elemento não existe. Este tempo deve ser muito baixo, para evitar que o Selenium fique esperando muito tempo por um elemento na tela antes de acusar um erro de tempo de espera excedido. O valor padrão deste tempo é 0. A necessidade do seu aumento pode ser um sintoma de problemas em controle de tempo entre ações no teste, portanto, tenha muita consciência ao aumentá-lo, pois ele influenciará todos os testes.