Selênio - Como esperar até que a página seja completamente carregada [duplicado]

Esta pergunta já tem uma resposta aqui:

Aguarde o carregamento da página no Selenium 45 respostas

Estou tentando automatizar alguns casos de teste usando Java e Selenium WebDriver. Eu tenho o seguinte cenário:

Existe uma página chamada 'Produtos'. Quando clico no link 'Visualizar detalhes' na página 'Produto', um pop-up (diálogo modal) contendo os detalhes do item é exibido.Quando clico no botão 'Fechar' no pop-up, o pop-up fecha e a página é atualizada automaticamente (a página está sendo recarregada, o conteúdo permanece inalterado).

Depois de fechar o pop-up, preciso clicar no botão 'Adicionar item' na mesma página. Mas quando o WebDriver tenta encontrar o botão 'Adicionar item', se a velocidade da Internet é muito rápida, o WebDriver pode encontrar e clicar no elemento.

Mas se a Internet estiver lenta, o WebDriver encontrará o botão antes da atualização da página, mas assim que o WebDriver clicar no botão, a página será atualizada e atualizada.StaleElementReferenceException ocorre.

Mesmo que diferentes esperas sejam usadas, todas as condições de espera se tornam verdadeiras (já que o conteúdo da página é o mesmo antes e depois do recarregamento), mesmo antes de a página ser recarregada eStaleElementReferenceException ocorre.

O caso de teste funciona bem seThread.sleep(3000); é usado antes de clicar no botão 'Adicionar item'. Existe alguma outra solução alternativa para esse problema?

questionAnswers(5)

yourAnswerToTheQuestion