O Rafael Telles De Macedo (Inclusive meu colega de faculdade), deu uma possível resolução para esse caso, mas está errada.
Eu não estou submetendo o form duas vezes: https://cursos.alura.com.br/forum/topico-solucao-curso-selenium-nome-submit-nao-funciona-83717
Meu código original clicando no botão salvar dá certinho, mas se eu colocar nome.submit() ele dá errado. Eu não estou fazendo os dois ao mesmo tempo:
Código que dá erro quando não deveria. Perceba que a parte do botão Salvar está comentada, por isso apenas a segunda opção é válida e mesmo assim encontro o mesmo erro
package br.com.caelum.teste;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class UsuariosSystemTest {
@Test
public void DeveAdicionarUmUsuario() {
// abre firefox
System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
// acessa o site usuários/new
driver.get("http://localhost:8080/usuarios/new");
WebElement nome = driver.findElement(By.name("usuario.nome"));
WebElement email = driver.findElement(By.name("usuario.email"));
nome.sendKeys("Joao Lucas");
email.sendKeys("joao.lucas@hotmail.com");
// Primeira Opção:
// WebElement botaoSalvar = driver.findElement(By.id("btnSalvar"));
// botaoSalvar.click();
// Segunda Opção:
nome.submit();
boolean achouNome = driver.getPageSource().contains("Joao Lucas");
boolean achouEmail = driver.getPageSource().contains("joao.lucas@hotmail.com");
assertTrue(achouNome);
assertTrue(achouEmail);
driver.close();
}
}