Quiero ejecutar pruebas de Selenium escritas en el marco TestNG usando Jenkins.

El comando configurado en el trabajo de jenkins (proyecto Freestyle):

java -cp J:\taf\testng\*;J:\taf\workspace\TestNGExamples\bin;J:\automation\* org.testng.TestNG J:\taf\workspace\TestNGExamples\testng1.xml

Nota: para -cp argument, dadas las rutas del directorio a testng jar, test classes, and selenium jar

Cuando ejecuto el trabajo (opción Build Now), se bloquea en la actividad de creación de sesión de Selenium y da el error.

Nota:

El mismo comando se ejecutó correctamente cuando se ejecutó desde la línea de comandos .

Registro de errores de la salida de la consola: (jenkins)

Started by user Naveen
Building in workspace C:\Program Files (x86)\Jenkins\workspace\TestNG Example
[TestNG Example] $ cmd /c call C:\Windows\TEMP\hudson2261889395366550414.bat

C:\Program Files (x86)\Jenkins\workspace\TestNG Example>java -cp J:\taf\testng\*;J:\taf\workspace\TestNGExamples\bin;J:\automation\* org.testng.TestNG J:\taf\workspace\TestNGExamples\testng1.xml 
[TestNG] Running:
  J:\taf\workspace\TestNGExamples\testng1.xml

1481801204206   geckodriver INFO    Listening on 127.0.0.1:1387
Dec 15, 2016 4:56:44 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
1481801204827   mozprofile::profile INFO    Using profile path C:\Windows\TEMP\rust_mozprofile.KDz9DWYpWQAM
1481801204829   geckodriver::marionette INFO    Starting browser C:\Program Files\Mozilla Firefox\firefox.exe
1481801204831   geckodriver::marionette INFO    Connecting to Marionette on localhost:7795
1481801206090   Marionette  INFO    Listening on port 7795

###!!! [Parent][MessageChannel] Error: (msgtype=0x2E007D,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv

JavaScript error: resource://app/modules/ContentCrashHandlers.jsm, line 75: TypeError: browser.permanentKey is not a non-null object

###!!! [Parent][MessageChannel] Error: (msgtype=0x2E007D,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv

Dec 15, 2016 4:56:47 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C

###!!! [Parent][MessageChannel] Error: (msgtype=0x2E007D,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv

A continuación se muestra la clase de prueba:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

    public class SeleniumTests {

        @Test
        public void test1(){
            WebDriver driver = new FirefoxDriver();
            driver.get("http://www.google.co.in");
            driver.quit();
        }

    }

A continuación se muestra el testng1.xml:

<?xml version="1.0" encoding="UTF-8"?>

<suite name="Default suite">
  <test verbose="2" name="Default test">
    <classes>
      <class name="SeleniumTests"/>
    </classes>
  </test> <!-- Default test -->
</suite> <!-- Default suite -->

Detalles del entorno:

  1. Jenkins - 2.19.4 (como servicio de Windows)
  2. Java - 1.8
  3. TestNG - 6.8.5
  4. Selenio - 3.0.1
  5. Firefox - 51
  6. geckodriver - 0.11.1
  7. SO - Windows 7 - 64 bits
2
Naveen Kumar R B 15 dic. 2016 a las 14:40

2 respuestas

La mejor respuesta

Este no es un problema de TestNG o Selenium. Este error a veces ocurre cuando Jenkins se instala como servicio de Windows. Instale Jenkins dentro de un contenedor de servlets como Tomcat o GlassFish y debería ayudar.

2
mackowski 19 dic. 2016 a las 07:25

Según lo sugerido por Mackowski, instalé Jenkins en tomcat como webapp (en lugar de Windows Service) y resolvió el problema .

Referencia:

  1. https://wiki.jenkins-ci.org/display/JENKINS/Tomcat

Nota: Cuando ejecutamos las pruebas cuando se implementan Jenkins as Windows Service, no se inicia ni se observa ninguna GUI del navegador. Jenkins inside tomcat, se inicia la GUI del navegador.

2
Naveen Kumar R B 19 dic. 2016 a las 07:09