Olá, pessoal!
Estou com problema na execução do teste de exclusão de um usuário com o cenário descrito a seguir:
Na classe UsuariosSystemTest,
@Test
public void deveExcluirUmUsuario() {
usuarios.novo().cadastra("Teste de Exclusão", "texclusao@teste.com.br");
assertTrue(usuarios.existeNaListagem("Teste de Exclusão", "texclusao@teste.com.br"));
usuarios.excluiUsuarioNaPosicao(1);
assertFalse(usuarios.existeNaListagem("Teste de Exclusão", "texclusao@teste.com.br"));
}
Na classe UsuariosPage,
public void excluiUsuarioNaPosicao(int posicao) {
driver.findElements(By.tagName("button")).get(posicao - 1).click();
Alert alert = driver.switchTo().alert();
alert.accept();
}
Esse cenário executa sem problemas no Chrome mas apresenta erro no Firefox.
Após várias tentativas de correção, o acréscimo de um comando wait do Selenium fez o teste resultar como o esperado no Firefox mas apresentar erro no Chrome.
Na classe UsuariosPage (para Firefox),
public void excluiUsuarioNaPosicao(int posicao) {
driver.findElements(By.tagName("button")).get(posicao - 1).click();
WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = driver.switchTo().alert();
alert.accept();
wait.until(ExpectedConditions.stalenessOf(driver.findElements(By.tagName("button")).get(posicao - 1)));
}
Sem o comando wait, no Firefox, o comando assertFalse(usuarios.existeNaListagem("Teste de Exclusão", "texclusao@teste.com.br")), executado após a exclusão do registro, retorna true e o teste falha.
No Chrome, a tentativa de acesso ao webElement no comando wait provoca erro.
As versões que estou utilizando:
Selenium selenium-server-standalone-3.11.0
Firefox 58.0.2 (64-bit)
Chrome Versão 65.0.3325.181 (Versão oficial) 64 bits
Windows 7 64 bits
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
JUnit 4
geckodriver 0.19.1
ChromeDriver 2.37.544315
Onde trabalho, utilizamos os dois browsers e faz-se necessário que os testes respondam corretamente para ambos.
Como resolver essa questão? Alguém poderia me ajudar?
Obrigada. : )