selenium jenkins selenium-webdriver continuous-integration selenium-chromedriver

Error[SEVERE]: Tiempo de espera para recibir el mensaje del renderizador: 20.000 al ejecutar el Testuite a través de Selenium en Jenkins



selenium-webdriver continuous-integration (1)

Uso ChromeDriver con Selenium para ejecutar mis pruebas automatizadas. El conjunto de pruebas se ejecuta correctamente tanto en Eclipse como en la línea de comandos. Sin embargo, no se ejecuta cuando intento construirlo en Jenkins.

Esta es mi configuración de trabajo en Jenkins (toda la información tiene nombres desinfectados por confidencialidad): Puedo confirmar que Ant está ejecutando JDK8.

Esta es la salida de la consola de la compilación:

[junit] Running main.TESTNAME [junit] Starting ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) on port 27352 [junit] Only local connections are allowed. [junit] Apr 26, 2018 3:52:34 PM org.openqa.selenium.remote.ProtocolHandshake createSession [junit] INFO: Detected dialect: OSS [junit] Running through test suite as: [junit] User: USERNAME [junit] URL: CONFIDENTIAL [junit] [30.168][SEVERE]: Timed out receiving message from renderer: 20.000 [junit] [30.170][SEVERE]: Timed out receiving message from renderer: -0.003 [junit] Total number of tests ran for TESTNAME: 5, Number of tests failures: 4, Number of tests ignored: 0 [junit] testViewProfileDetailsButtonAndBrowseBack(test.TESTNAME): timeout [junit] (Session info: chrome=64.0.3282.119) [junit] (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.14393 x86_64) (WARNING: The server did not provide any stacktrace information) [junit] Command duration or timeout: 0 milliseconds [junit] Build info: version: ''3.8.1'', revision: ''6e95a6684b'', time: ''2017-12-01T19:05:14.666Z'' [junit] System info: host: ''PC'', ip: ''IP'', os.name: ''Windows 10'', os.arch: ''amd64'', os.version: ''10.0'', java.version: ''1.8.0_151'' [junit] Driver info: org.openqa.selenium.chrome.ChromeDriver [junit] Capabilities {acceptSslCerts: true, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.33.506120 (e3e53437346286..., userDataDir: C:/WINDOWS/TEMP/scoped_dir1...}, cssSelectorsEnabled: true, databaseEnabled: false, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 64.0.3282.119, webStorageEnabled: true}

Mi build.xml continuación es en su mayoría generado automáticamente, excepto en el extremo donde agregué la integración de JUnit:

<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="build" name="PROJECTSeleniumTest"> <property environment="env"/> <property name="debuglevel" value="source,lines,vars"/> <property name="target" value="1.8"/> <property name="source" value="1.8"/> <path id="PROJECTSeleniumTest.classpath"> <pathelement location="bin"/> <pathelement location="lib/byte-buddy-1.7.5.jar"/> <pathelement location="lib/client-combined-3.8.1-sources.jar"/> <pathelement location="lib/client-combined-3.8.1.jar"/> <pathelement location="lib/commons-codec-1.10.jar"/> <pathelement location="lib/commons-exec-1.3.jar"/> <pathelement location="lib/commons-logging-1.2.jar"/> <pathelement location="lib/gson-2.8.2.jar"/> <pathelement location="lib/guava-23.0.jar"/> <pathelement location="lib/hamcrest-core-1.3.jar"/> <pathelement location="lib/httpclient-4.5.3.jar"/> <pathelement location="lib/httpcore-4.4.6.jar"/> <pathelement location="lib/junit-4.12.jar"/> </path> <target name="init"> <mkdir dir="bin"/> <copy includeemptydirs="false" todir="bin"> <fileset dir="src"> <exclude name="**/*.launch"/> <exclude name="**/*.java"/> </fileset> </copy> </target> <target name="clean"> <delete dir="bin"/> </target> <target depends="clean" name="cleanall"/> <target depends="build-subprojects,build-project,junit" name="build"/> <target name="build-subprojects"/> <target depends="init" name="build-project"> <echo message="${ant.project.name}: ${ant.file}"/> <javac debug="true" debuglevel="${debuglevel}" destdir="bin" includeantruntime="false" source="${source}" target="${target}"> <src path="src"/> <classpath refid="PROJECTSeleniumTest.classpath"/> </javac> </target> <target name="create_directory"> <echo message="Create the directory JenkinsTestReports/" /> <mkdir dir="JenkinsTestReports" /> </target> <target name="junit" depends="create_directory"> <echo message="${java.version}"/> <junit printsummary="yes" fork="yes" haltonfailure="yes"> <classpath> <path refid="PROJECTSeleniumTest.classpath" /> <pathelement location="${basedir}/bin"/> </classpath> <batchtest todir="JenkinsTestReports" fork="true"> <fileset dir="${basedir}/bin"> <include name="main/TESTNAME.class"/> </fileset> </batchtest> <formatter type="xml"/> <formatter type="plain"/> </junit> </target>

¿Alguien sabe cuál podría ser la causa? Gracias.


Este mensaje de error ...

[30.168][SEVERE]: Timed out receiving message from renderer: 20.000

... implica que ChromeDriver no pudo iniciar un nuevo proceso del navegador Chrome .

Su principal problema es la compatibilidad de la versión entre los binarios que está utilizando de la siguiente manera:

Soporta cromo v60-62

Es compatible con Chrome v62-64 ( incluye la versión del navegador que está utilizando )

  • Su versión de Selenium Client es 3.8.1 .
  • Su versión JDK es 1.8.0_151, que es bastante más antigua.

Así que hay una clara falta de coincidencia entre JDK v8u151 , Selenium Client v3.8.1 , ChromeDriver v2.33 y Chrome Browser v64.0

Solución

  • Actualiza JDK a los niveles recientes JDK 8u162 .
  • Actualiza Selenium a los niveles actuales Versión 3.11.0 .
  • Actualiza ChromeDriver al nivel actual de ChromeDriver v2.38 .
  • Mantenga la versión de Chrome en los niveles de Chrome v66.x. ( según las notas de la versión de ChromeDriver v2.38 )
  • Limpie su Área de trabajo del proyecto a través de su IDE y Reconstruya su proyecto solo con las dependencias requeridas.
  • Use la herramienta CCleaner para borrar todas las tareas del sistema operativo antes y después de la ejecución de su Test Suite .
  • Si la versión básica de su cliente web es demasiado antigua, desinstálela a través de Revo Uninstaller e instale un GA reciente y una versión de lanzamiento del cliente web .
  • Tomar un reinicio del sistema .
  • Ejecute su @Test .