无法在Jenkins

时间:2017-11-01 15:03:23

标签: selenium jenkins protractor selenium-chromedriver

版-的相关信息:

  • chromedriver:2.33
  • npm:5.5.1
  • nodejs:8.9.0
  • openjdk版本:   1.8.0_141
  • docker-image:openjdk:8

这是我的问题:我想在Jenkins上使用Protractor开始e2e-Tests。我正在运行一个docker-container来构建整个应用程序以及测试。我在容器中安装了镀铬和镀铬液。我用webdriver-manager start启动了驱动程序。现在的问题是,当Jenkins想要启动e2e-Tests时,它会因以下错误而崩溃:

[15:05:17] I/file_manager - creating folder /data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/node_modules/webdriver-manager/selenium
[15:05:18] I/update - chromedriver: unzipping chromedriver_2.33.zip
[15:05:18] I/update - chromedriver: setting permissions to 0755 for /data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.33
[15:05:18] I/launcher - Running 1 instances of WebDriver
[15:05:18] I/direct - Using ChromeDriver directly...
[15:06:19] E/launcher - unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.4.74-92.29-default x86_64)
[15:06:19] E/launcher - WebDriverError: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.4.74-92.29-default x86_64)
    at Object.checkLegacyResponse (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/selenium-webdriver/lib/error.js:505:15)
    at parseHttpResponse (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/selenium-webdriver/lib/http.js:509:13)
    at doSend.then.response (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/selenium-webdriver/lib/http.js:440:13)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
From: Task: WebDriver.createSession()
    at Function.createSession (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/selenium-webdriver/lib/webdriver.js:777:24)
    at Function.createSession (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/selenium-webdriver/chrome.js:709:29)
    at Direct.getNewDriver (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/lib/driverProviders/direct.ts:90:25)
    at Runner.createBrowser (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/lib/runner.ts:225:39)
    at q.then.then (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/lib/runner.ts:391:27)
    at _fulfilled (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/node_modules/q/q.js:796:13)
    at /data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/node_modules/q/q.js:556:49
    at runSingle (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/node_modules/q/q.js:137:13)
    at flush (/data/jenkins-slave/workspace/ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A/ebd-web-ui/node_modules/protractor/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
[15:06:19] E/launcher - Process exited with error code 199
script returned exit code 199

我的Jenkins文件的一部分,我安装了node,npm,chr​​omedriver等等:

sh 'apt-get update && apt-get install -y curl'
sh 'curl -sL https://deb.nodesource.com/setup_8.x | bash -'
sh 'apt-get install -y nodejs'
sh 'npm config set registry="https://nexus3.eap.bit.admin.ch/repository/npm-all/"'
sh 'npm config set strict-ssl false'
sh "java -version"
sh "nodejs --version"
sh "npm --version"
sh 'wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | apt-key add -'
sh 'echo "deb http://packages.cloudfoundry.org/debian stable main" | tee /etc/apt/sources.list.d/cloudfoundry-cli.list'
sh 'apt-get update'
sh 'apt-get install -y cf-cli'
sh 'cf --version'
sh 'date'
sh 'npm install protractor -g'
sh 'webdriver-manager update'

sh 'sh -c \'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" | tee -a /etc/apt/sources.list\''
sh 'wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'

sh 'apt-get update'
sh 'apt-get install -y libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4 '
sh 'apt-get install -y libxss1 fonts-liberation libappindicator1 xdg-utils'

sh 'wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb'
sh 'dpkg -i google-chrome-stable_current_amd64.deb'
sh 'apt-get install -y google-chrome-stable'

sh 'apt-get install -y xvfb gtk2-engines-pixbuf'
sh 'apt-get install -y xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable'
sh 'apt-get install -y imagemagick x11-apps dbus-x11'

sh 'Xvfb -ac :99 -screen 0 1280x1024x16 & export DISPLAY=:99'
sh 'webdriver-manager start &'

启动webdriver-manager时的输出:

[ature_ChromeHeadlessJenkins-I3N4DKAF3MHS72RV35MYVEHTF7OCMJ2VQKG54JMW2L7IQHOYN66A] Running shell script
+ webdriver-manager start
[15:33:18] I/start - java -Djava.security.egd=file:///dev/./urandom -Dwebdriver.chrome.driver=/usr/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.33 -Dwebdriver.gecko.driver=/usr/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.19.1 -jar /usr/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.6.0.jar -port 4444
[15:33:18] I/start - seleniumProcess.pid: 17381
14:33:19.123 INFO - Selenium build info: version: '3.6.0', revision: '6fbf3ec767'
14:33:19.124 INFO - Launching a standalone Selenium Server
2017-11-01 14:33:19.151:INFO::main: Logging initialized @292ms to org.seleniumhq.jetty9.util.log.StdErrLog
14:33:19.211 INFO - Driver class not found: com.opera.core.systems.OperaDriver
14:33:19.237 INFO - Driver provider class org.openqa.selenium.ie.InternetExplorerDriver registration is skipped:
 registration capabilities Capabilities [{ensureCleanSession=true, browserName=internet explorer, version=, platform=WINDOWS}] does not match the current platform LINUX
14:33:19.237 INFO - Driver provider class org.openqa.selenium.edge.EdgeDriver registration is skipped:
 registration capabilities Capabilities [{browserName=MicrosoftEdge, version=, platform=WINDOWS}] does not match the current platform LINUX
14:33:19.237 INFO - Driver provider class org.openqa.selenium.safari.SafariDriver registration is skipped:
 registration capabilities Capabilities [{browserName=safari, version=, platform=MAC}] does not match the current platform LINUX
14:33:19.258 INFO - Using the passthrough mode handler
2017-11-01 14:33:19.279:INFO:osjs.Server:main: jetty-9.4.5.v20170502
2017-11-01 14:33:19.313:WARN:osjs.SecurityHandler:main: ServletContext@o.s.j.s.ServletContextHandler@3a5ed7a6{/,null,STARTING} has uncovered http methods for path: /
2017-11-01 14:33:19.318:INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@3a5ed7a6{/,null,AVAILABLE}
2017-11-01 14:33:19.333:INFO:osjs.AbstractConnector:main: Started ServerConnector@694e1548{HTTP/1.1,[http/1.1]}{0.0.0.0:4444}
2017-11-01 14:33:19.333:INFO:osjs.Server:main: Started @474ms
14:33:19.333 INFO - Selenium Server is up and running

有谁知道解决方案或有想法如何摆脱这个? THX!

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,让我的Protractor测试在Jenkins上运行。不幸的是,我从未弄清楚导致问题的原因,但我确实发现当从独立的JAR(https://www.npmjs.com/package/selenium-server-standalone-jar)运行Selenium Server时,无论出于何种原因,webdriver都能够正确连接。如果这对你有用,我会很好奇。

OP提供的更多细节:

  1. 我使用NPM安装了Selenium独立JAR
  2. sudo npm install selenium-server-standalone-jar

    1. 我编辑了我的protractor.conf.js:

      multiCapabilities: [ {browserName: 'chrome', chromeOptions: {args:['no-sandbox','--headless','disable-gpu']}} ], //directConnect: true, //seleniumAddress: 'http://172.17.0.2:4444/wd/hub', seleniumServerJar :'./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.6.0.jar'

      • 添加了headless和disable-gpu

      • 已删除directConnect

      • 删除了seleniumAdress(因为它会以某种方式覆盖selenium服务器)

      • 添加了jar(seleniumServerJar)

      • 的路径
相关问题