2
respostas

No Firefox, o comando txtNome.submit não funciona

Olá, pessoal!

No código do método preenche(String nome, double valor, String usuario, boolean usado), da classe NovoLeilaoPage, o comando txtNome.submit não funcionou no Firefox. O leilão não é cadastrado e o teste falha.

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

No Chrome, funciona como esperado.

Foi necessário alterar o código como a seguir:

    public void preenche(String nome, double valor, String usuario, boolean usado) {

        WebElement txtNome = driver.findElement(By.name("leilao.nome"));
        WebElement txtValor = driver.findElement(By.name("leilao.valorInicial"));
        txtNome.sendKeys(nome);
        txtValor.sendKeys(String.valueOf(valor));

        Select cbUsuario = new Select(driver.findElement(By.name("leilao.usuario.id")));
        cbUsuario.selectByVisibleText(usuario);

        if (usado) {            
            WebElement ckUsado = driver.findElement(By.name("leilao.usado"));
            ckUsado.click();                
        }

        WebElement botaoSalvar = driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[1]/form/div[5]/button"));
        botaoSalvar.click();

    }

Desse modo, o teste executa sem problemas tanto no Chrome como no Firefox.

: )

2 respostas

Opa Suely, obrigado por compartilhar. Conseguiu verificar o motivo pelo qual não funcionava? Só por curiosidade mesmo.

Olá, Alberto!

Não consegui detectar o motivo do erro no Firefox.

Hoje, fiz um teste atualizando a versão do geckodriver para a v0.20.1 e o comando txtNome.submit funcionou e o novo leilão foi salvo. Porém, o teste falhou na execução do comando assertTrue(leiloes.existe("Liquidificador", 123, "Paulo Henrique", true)). Para corrigir essa falha foi necessário acrescentar um comando wait.

    public void preenche(String nome, double valor, String usuario, boolean usado) {

        WebElement txtNome = driver.findElement(By.name("leilao.nome"));
        WebElement txtValor = driver.findElement(By.name("leilao.valorInicial"));
        txtNome.sendKeys(nome);
        txtValor.sendKeys(String.valueOf(valor));

        Select cbUsuario = new Select(driver.findElement(By.name("leilao.usuario.id")));
        cbUsuario.selectByVisibleText(usuario);

        if (usado) {            
            WebElement ckUsado = driver.findElement(By.name("leilao.usado"));
            ckUsado.click();                
        }

        txtNome.submit();

        WebDriverWait wait = new WebDriverWait(driver, 10);

        wait.until(ExpectedConditions.invisibilityOf(txtNome));

    }

Além disso, essa nova versão do geckodriver apresenta uma mensagem de erro no console, apesar de executar o teste e finalizá-lo:

1523562309509    geckodriver    INFO    geckodriver 0.20.1
1523562309524    geckodriver    INFO    Listening on 127.0.0.1:46324
1523562320428    mozrunner::runner    INFO    Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile" "C:\\Users\\035114~1\\AppData\\Local\\Temp\\rust_mozprofile.JP0XV6vExq9c"
1523562320986    Marionette    INFO    Enabled via --marionette
1523562322324    Marionette    INFO    Listening on port 50923
1523562322457    Marionette    WARN    TLS certificate errors will be ignored for this session
abr 12, 2018 4:45:22 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFORMAÇÕES: Detected dialect: W3C
Unable to read VR Path Registry from C:\Users\035114110582\AppData\Local\openvr\openvrpaths.vrpath
[Parent 9740, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
Unable to read VR Path Registry from C:\Users\035114110582\AppData\Local\openvr\openvrpaths.vrpath
[Child 10028, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 10028, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Parent 9740, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
Unable to read VR Path Registry from C:\Users\035114110582\AppData\Local\openvr\openvrpaths.vrpath
[Child 9828, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 9828, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Parent 9740, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
Unable to read VR Path Registry from C:\Users\035114110582\AppData\Local\openvr\openvrpaths.vrpath
[Child 5300, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 5300, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
Unable to read VR Path Registry from C:\Users\035114110582\AppData\Local\openvr\openvrpaths.vrpath
[GPU 5580, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346

###!!! [Child][MessageChannel::SendAndWait] Error: Channel error: cannot send/recv

Não investiguei sobre isso. Resolvi seguir o estudo com a versão anterior do geckodriver.

: )