ChromeDriver gagal memulai ketika Selenium dimulai melalui Jenkins (Mac OS X)

Konfigurasi: Mac OS X 10.8.5, java 1.6.0_65, Selenium 2.37, Jenkins 1.538, Chrome 30.0.1599.101, ChromeDriver v2.6.232908 dan Firefox 25.0. Saya menjalankan tes menggunakan PHPUnit 3.7.28 dan PHP 5.3.22 (menggunakan PHPUnit_Extensions_Selenium2TestCase).

(1) Jika saya memulai Selenium secara manual seperti:

 $ java -jar ~/Downloads/selenium-server-standalone-2.37.0.jar  -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver

Saya dapat menjalankan tes seperti yang diharapkan.

(2) Namun, jika saya memulai Selenium melalui Jenkins:

 # launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist 

Dan kemudian jalankan tes saya, saya mendapatkan kesalahan:

$ phpunit --verbose tests/classes/core/admin_campaignhome_loads.php 
PHPUnit 3.7.28 by Sebastian Bergmann.

E

Time: 20.56 seconds, Memory: 5.25Mb

There was 1 error:

1) AdminTest::testLoginToBackend
PHPUnit_Extensions_Selenium2TestCase_WebDriverException: unknown error: Chrome failed to start: exited normally
  (Driver info: chromedriver=2.6.232908,platform=Mac OS X 10.8.5 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 20.53 seconds
Build info: version: '2.37.0', revision: 'a7c61cb', time: '2013-10-18 17:14:00'
System info: host: 'Pauls-iMac.local', ip: '192.168.1.18', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.5', java.version: '1.6.0_65'
Driver info: org.openqa.selenium.chrome.ChromeDriver

/usr/local/php5-20130308-201415/lib/php/PHPUnit/TextUI/TestRunner.php:349
/usr/local/php5-20130308-201415/lib/php/PHPUnit/TextUI/Command.php:176
/usr/local/php5-20130308-201415/lib/php/PHPUnit/TextUI/Command.php:129

FAILURES!
Tests: 1, Assertions: 0, Errors: 1.

(3) Firefox + Selenium melalui Jenkins memungkinkan saya menjalankan pengujian seperti yang diharapkan.

jenkins.log memiliki yang berikut:

14:51:11.439 INFO - Executing: [new session: {browserName=chrome}] at URL: /session)
14:51:11.440 INFO - Creating a new session for Capabilities [{browserName=chrome}]
Starting ChromeDriver (v2.6.232908) on port 33014
14:51:31.972 WARN - Exception thrown
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: '2.37.0', revision: 'a7c61cb', time: '2013-10-18 17:14:00'
System info: host: 'Pauls-iMac.local', ip: '192.168.1.18', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.5', java.version: '1.6.0_65'
Driver info: driver.version: unknown
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:176)
    at org.openqa.selenium.remote.server.DefaultSession.<init>(DefaultSession.java:112)
    at org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:89)
    at org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:104)
    at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:63)
    at org.openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:205)
    at org.openqa.selenium.remote.server.JsonHttpRemoteConfig.handleRequest(JsonHttpRemoteConfig.java:192)
    at org.openqa.selenium.remote.server.DriverServlet.handleRequest(DriverServlet.java:201)
    at org.openqa.selenium.remote.server.DriverServlet.doPost(DriverServlet.java:167)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.openqa.selenium.remote.server.DriverServlet.service(DriverServlet.java:139)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
    at org.openqa.jetty.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:677)
    at org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
    at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1526)
    at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1479)
    at org.openqa.jetty.http.HttpServer.service(HttpServer.java:914)
    at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820)
    at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986)
    at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837)
    at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:243)
    at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:357)
    at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: '2.37.0', revision: 'a7c61cb', time: '2013-10-18 17:14:00'
System info: host: 'Pauls-iMac.local', ip: '192.168.1.18', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.5', java.version: '1.6.0_65'
Driver info: driver.version: unknown
    at org.openqa.selenium.remote.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.java:72)
    at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:56)
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:215)
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:695)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.openqa.selenium.remote.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.java:62)
    ... 9 more
Caused by: org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited normally
  (Driver info: chromedriver=2.6.232908,platform=Mac OS X 10.8.5 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 20.53 seconds
Build info: version: '2.37.0', revision: 'a7c61cb', time: '2013-10-18 17:14:00'
System info: host: 'Pauls-iMac.local', ip: '192.168.1.18', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.5', java.version: '1.6.0_65'
Driver info: org.openqa.selenium.chrome.ChromeDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:150)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:129)
    ... 14 more
14:51:31.974 WARN - Exception: unknown error: Chrome failed to start: exited normally
  (Driver info: chromedriver=2.6.232908,platform=Mac OS X 10.8.5 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 20.53 seconds
Build info: version: '2.37.0', revision: 'a7c61cb', time: '2013-10-18 17:14:00'
System info: host: 'Pauls-iMac.local', ip: '192.168.1.18', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.5', java.version: '1.6.0_65'
Driver info: org.openqa.selenium.chrome.ChromeDriver

person Paul Schreiber    schedule 06.11.2013    source sumber


Jawaban (1)


Itu karena instance jenkins yang dimulai tidak memiliki kemampuan chrome

Melihat

http://localhost:4444 

untuk melihat kemampuan yang dimilikinya

Anda dapat menambahkan kemampuan tambahan dengan

java -jar selenium-server-standalone-2.37.0.jar -role node \
    -hub http://localhost:4444/grid/register  \
    -browser "browserName=chrome,version=25,maxInstances=5" \
    -Dwebdriver.chrome.driver="/usr/local/bin/chromedriver" \ 
    -host localhost \
    -port 5556

Anda dapat menggunakan pengaturan -port yang berbeda untuk menjalankan beberapa kemampuan dari mesin yang sama atau bahkan menghubungkan dari mesin yang berbeda dengan mengubah -hub ke alamat sebenarnya dari server Selenium


Sunting

Saya membuat ulang masalah Anda dengan menghubungkan driver chrome saya tanpa

-Dwebdriver.chrome.driver='...'

I'm on v2.33.0

13:18:44.922 PERINGATAN - Pengecualian dilemparkan java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException Info pembuatan: versi: '2.33.0', revisi: '4e90c97', waktu : '22-05-2013 15:32:38' Info sistem: os.name: 'Linux', os.arch: 'amd64', os.version: '3.2.0-55-generic', java.version: '1.7.0_45' Info driver: driver.version: tidak diketahui di java.util.concurrent.FutureTask.report(FutureTask.java:122) di java.util.concurrent.FutureTask.get(FutureTask.java:188) di org. openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:176)

Jadi saya menduga plugin Selenium-jenkins yang Anda gunakan tidak memiliki set chromedriver atau tidak valid. Ada log yang perlu diperiksa (Saya tidak lagi memiliki kisi Selenium di Jenkins saya) atau mungkin menambahkan jalur ke chromedriver ke jalur Anda seperti di utas ini https://groups.google.com/forum/?fromgroups#!topic/selenium-users/-3LJ3wma3RE

person KeepCalmAndCarryOn    schedule 06.11.2013
comment
1. Jika saya melihat localhost:8080/selenium sebelum menjalankannya, saya sudah melihat Chrome terdaftar (http://192.168.1.18:4445 {seleniumProtocol=WebDriver, platform=MAC, browserName=chrome, maxInstances=5, jenkins.nodeName=(master)} Idle). Jika saya menjalankan perintah Anda, saya melihat rangkaian contoh kedua (http://localhost:5556 {platform=MAC, seleniumProtocol=WebDriver, browserName=chrome, maxInstances=5, version=30}). Kenapa begitu? 2. Apakah ada cara agar Jenkins memulai instance Selenium dengan dukungan Chrome? Tampaknya aneh harus menambahkan node setiap kali. - person Paul Schreiber; 07.11.2013
comment
Saya memperbarui jawaban saya tetapi menurut saya jenkins tidak dapat menemukan file chromedriver - person KeepCalmAndCarryOn; 07.11.2013
comment
chromedriver ada di /usr/bin. Saya juga menyetel jalur ChromeDriver secara manual di konfigurasi Jenkins/Selenium. - person Paul Schreiber; 07.11.2013
comment
Tidak yakin seberapa benar menentukan jalur chromedriver sebagai variabel Jenkins global -- sebaiknya ini ada di agen build. - person Nakilon; 01.09.2015