2
respostas

Curso Selenium - nome.submit não funciona.

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 CadastroUsuarios {

    @Test
    public void adicionandoUsuario() {

        //Abre o driver do Firefox
        WebDriver driver = new FirefoxDriver();

        //Acessa o endereço do site
        driver.get("http://localhost:8080/usuarios/new");

        // encontrando ambos elementos "nome" e "email" na pagina        
        WebElement nome = driver.findElement(By.name("usuario.nome"));
        WebElement email = driver.findElement(By.name("usuario.email"));

        //Preenchendo os campos "nome" e "email" do site
        nome.sendKeys("Adriano Xavier");
        email.sendKeys("axavier@empresa.com.br");

        WebElement botaoSalvar = driver.findElement(By.id("btnSalvar"));
        botaoSalvar.click();

        //nome.submit();


        assertTrue(driver.getPageSource().contains("Adriano Xavier"));
        assertTrue(driver.getPageSource().contains("axavier@empresa.com.br"));

        driver.close();

Se eu fizer assim funciona, porém no exemplo do professor ele pede para colocar nome.submit() e fazendo assim o teste sempre dá erro no JUnit. Notei também que no exemplo do professor ele não coloca email.submit(), tentei colocar e mesmo assim o teste sempre falha.

Notei também que usando o botaoSalvar.click() faz com que ao final o eclipse feche o driver "driver.close()" e na versão do professor o browser permanece aberto, me levando a pensar que essa instrução nunca é executada.

Versão do Professor no site da Alura:

@Test
    public void deveAdicionarUmUsuario() {
        WebDriver driver = new FirefoxDriver();
        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("Adriano Xavier");
        email.sendKeys("axavier@empresa.com.br");

        nome.submit();

        assertTrue(driver.getPageSource().contains("Adriano Xavier"));
        assertTrue(driver.getPageSource().contains("axavier@empresa.com.br"));

        driver.close();

    }
2 respostas

Fala Thiago, tudo bem?

Ao fazer nome.submit() você comenta que dá um erro no JUnit, você tem o stack do erro pra nós darmos uma olhada?

Vamos lá então.

Rodando o código com o nome.submit();

Eu obtenho isso no console de comando (isso é o tal do stack?) e o teste não fica verde, acusando falha, porém ele adiciona o xavier e o email do xavier normalmente.

1553206714583    mozrunner::runner    INFO    Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\Luppi\\AppData\\Local\\Temp\\rust_mozprofile.3ndqna6ka8mx"
1553206715782    addons.webextension.screenshots@mozilla.org    WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: resource://pdf.js/
1553206715782    addons.webextension.screenshots@mozilla.org    WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: about:reader*
1553206718526    Marionette    INFO    Listening on port 49265
1553206718888    Marionette    WARN    TLS certificate errors will be ignored for this session
mar 21, 2019 7:18:39 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFORMAÇÕES: Detected dialect: W3C

Agora, se eu rodar o mesmo código, porém comentando aquela linha do nome.submit(); e mandando ele clicar no botão salvar ele apresenta isso no console:

1553207055977    mozrunner::runner    INFO    Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\Luppi\\AppData\\Local\\Temp\\rust_mozprofile.43T0fdMHZlHZ"
1553207056266    addons.webextension.screenshots@mozilla.org    WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: resource://pdf.js/
1553207056266    addons.webextension.screenshots@mozilla.org    WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: about:reader*
1553207058427    Marionette    INFO    Listening on port 49467
1553207058680    Marionette    WARN    TLS certificate errors will be ignored for this session
mar 21, 2019 7:24:18 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFORMAÇÕES: Detected dialect: W3C
1553207059545    Marionette    INFO    Stopped listening on port 49467
JavaScript error: resource://activity-stream/lib/ActivityStreamPrefs.jsm, line 23: NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIPrefBranch.removeObserver]
[Child 4176, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Child 4176, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/[Parent 6952, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
common/ipc_channel_win.cc, line 332
[Child 3644, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Child 3644, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Parent 6952, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Child 6396, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Child 6396, Chrome_ChildThread] WARNING: pipe error: JavaScript error: resource://gre/modules/JSONFile.jsm, line 159: Error: Data is not ready.

###!!! [Parent][DispatchAsyncMessage] Error: PBackgroundIDBFactory::Msg_PBackgroundIDBFactoryRequestConstructor Value error: message was deserialized, but contained an illegal value


###!!! [Parent][DispatchAsyncMessage] Error: PBackgroundIDBFactory::Msg_PBackgroundIDBFactoryRequestConstructor Value error: message was deserialized, but contained an illegal value

Porém, ele faz tudo corretamente: adiciona o xavier e seu email, e ainda fecha o browser ao final.