2
respostas

Rodei o código abaixo porém me retornou erro, porém o nome e e-mail estão certo no Grid e na inclusão.

```
Erro
java.lang.AssertionError
    at org.junit.Assert.fail(Assert.java:86)
    at org.junit.Assert.assertTrue(Assert.java:41)
    at org.junit.Assert.assertTrue(Assert.java:52)
    at br.com.caelum.teste.UsuariosSystemTest.deveAdicionarUsuario(UsuariosSystemTest.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Código
package br.com.caelum.teste;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import static org.junit.Assert.assertTrue;
import org.junit.*;

public class UsuariosSystemTest {

        @Test
        public void deveAdicionarUsuario() {

            //Caminho onde se encontra o drive do firefox - GECKO Driver
            System.setProperty("webdriver.gecko.driver", "C:/Users/dlpa/Documents/Testes de Software/Instalador Java/geckodriver-v0.14.0-win64/geckodriver.exe");

            //Instanciando o WebDriver do FireFox
            WebDriver Fdriver = new FirefoxDriver();

            //Utilizando o comando Get para acessar a página onde se cria os usuários.
            Fdriver.get("http://localhost:8080/usuarios/new");

            //Instanciando os elementos para preenchimento dos campos e clicar no botão salvar
            WebElement campoNome = Fdriver.findElement(By.name("usuario.nome"));
            WebElement campoEmail = Fdriver.findElement(By.name("usuario.email"));
            WebElement btnsalvar = Fdriver.findElement(By.id("btnSalvar"));

            //preenchendo o campo nome
            campoNome.sendKeys("Daniel Proenca");

            //preenchendo o campo e-mail
            campoEmail.sendKeys("daniel.proenca@gft.com");

            //clicando no botão salvar
            btnsalvar.click();


            //Recuperando o valor da pagina, essa função retorna um booleano True ou False:
            boolean achouNome = Fdriver.getPageSource().contains("Daniel Proenca");
            boolean achouemail = Fdriver.getPageSource().contains("daniel.proenca@gft.com");

            //Verificação via JUNIT
            assertTrue(achouNome);
            assertTrue(achouemail);

            //finalizando o driver
            Fdriver.close();
        }
    }

insira seu código aqui

2 respostas

Olá Daniel,

as versões atuais do Selenium muitas vezes não esperam a requisição terminar antes de executar o próximo passo do teste. Então o que pode estar acontecendo é que ele está validando se achou o nome e o e-mail antes da tela ser carregada. Para fazer este teste você pode executar o teste em modo de debug e executar linha a linha. Provavelmente deve passar o teste. Para resolver este problema você pode usar o wait que é apresentado na aula 5.

Olá Lucas, acredito que possa ser isso! Realizei uma alteração no código e funcionou.

Antes eu estava fechando no driver.close(); no final do código após os asserts, agora inverti, fecho o driver e depois faço os asserts e funcionou.

package br.com.caelum.teste;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import static org.junit.Assert.assertTrue;
import org.junit.*;

public class UsuariosSystemTest {

        @Test
        public void deveAdicionarUsuario() {

            //Caminho onde se encontra o drive do firefox - GECKO Driver
            System.setProperty("webdriver.gecko.driver", "C:/Users/dlpa/Documents/Testes de Software/Instalador Java/geckodriver-v0.14.0-win64/geckodriver.exe");

            //Instanciando o WebDriver do FireFox
            WebDriver Fdriver = new FirefoxDriver();

            //Utilizando o comando Get para acessar a página onde se cria os usuários.
            Fdriver.get("http://localhost:8080/usuarios/new");

            //Instanciando os elementos para preenchimento dos campos e clicar no botão salvar
            WebElement campoNome = Fdriver.findElement(By.name("usuario.nome"));
            WebElement campoEmail = Fdriver.findElement(By.name("usuario.email"));
            WebElement btnsalvar = Fdriver.findElement(By.id("btnSalvar"));

            //preenchendo o campo nome
            campoNome.sendKeys("Daniel Proenca");

            //preenchendo o campo e-mail
            campoEmail.sendKeys("daniel.proenca@gft.com");

            //clicando no botão salvar
            btnsalvar.click();


            //Recuperando o valor da pagina, essa função retorna um booleano True ou False:
            boolean achouNome = Fdriver.getPageSource().contains("Daniel Proenca");
            boolean achouemail = Fdriver.getPageSource().contains("daniel.proenca@gft.com");

            //finalizando o driver
            Fdriver.close();

            //Verificação via JUNIT
            assertTrue(achouNome);
            assertTrue(achouemail);


        }
    }