Javaで記述されたアプリケーションテストでremoteWebDriverを使用して、Selenium-server-standaloneへの接続をセットアップしようとした後、例外が発生しました。
この問題は、mavenを使用してSelenium-server-standalone(Xvfbを使用)を起動するremoteWebDriverの使用に関連しています(別のセッションXvfbで手動で実行してから、Selenium-serverスタンドアロンでアプリケーションテストが機能しているため)。この環境は、RH Linux R4.1.x、Selenium 2.1、firefox3.6で構成されています。 Selenium-server-standaloneとアプリケーションテストの両方が同じマシン(仮想マシン)で実行されます。
前述のように、次のコマンドを使用して別のPuTTYセッション(アプリケーションテストの開始に使用されるセッションとは別)によってこのインスタンスが開始された場合、アプリケーションテストはSelenium-server-standalone-2.21.0のインスタンスに正常に接続して実行されます。
#Xvfb :20 &
#export DISPLAY=:20
#Java –Dwebdriver.firefox.firefox=“/opt/firefox/firefox” –jar Selenium-server-standalone-2-.21.0.jar -port 4441.
Selenium-server-standaloneに接続するためのアプリケーションテストコードは次のとおりです。
DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setPlatform(Platform.LINUX);
WebDriver driver = new RemoteWebDriver (new URL("http://127.0.0.1:14444/wd/hub"),capability);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
アプリケーションテストを開始する前に、mavenを使用してxvfbとSelenium-server-standaloneも起動しようとすると、次のエラーが発生します(同じPuTTYセッション内で)。
Selenium server conenction string: http://127.0.0.1:14444/wd/hub
brand community file name orig :/opt/optism_svn/trunk/ITests/Projects/core/bbCampaigns/BrandCommunitiesWD/src/test/resources/Orig_BrandCommunity_Test6386.csv
before connecting to web driver
15:17:05.591 INFO - Executing: [new session: {platform=LINUX, browserName=firefox, version=}] at URL: /session)
15:17:05.651 WARN - Exception thrown
Java.util.concurrent.ExecutionException: org.openqa.Selenium.WebDriverException: Java.lang.reflect.InvocationTargetException
Build info: version: '2.2.1', revision: '16551', time: '2012-04-11 21:42:35'
System info: os.name: 'Linux', os.Arch: 'AMD64', os.version: '2.6.18-194.el5', Java.version: '1.6.0_22'
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:158)
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:92)
at org.openqa.Selenium.remote.server.handler.NewSession.handle(NewSession.Java:62)
at org.openqa.Selenium.remote.server.rest.ResultConfig.handle(ResultConfig.Java:202)
at org.openqa.Selenium.remote.server.DriverServlet.handleRequest(DriverServlet.Java:597)
at org.openqa.Selenium.remote.server.DriverServlet.doPost(DriverServlet.Java:548)
at javax.servlet.http.HttpServlet.service(HttpServlet.Java:727)
at org.openqa.Selenium.remote.server.DriverServlet.service(DriverServlet.Java:520)
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:1530)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.Java:1482)
at org.openqa.jetty.http.HttpServer.service(HttpServer.Java:909)
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.2.1', revision: '16551', time: '2012-04-11 21:42:35'
System info: os.name: 'Linux', os.Arch: 'AMD64', os.version: '2.6.18-194.el5', Java.version: '1.6.0_22'
**Driver info: driver.version: unknown**
at org.openqa.Selenium.remote.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.Java:68)
at org.openqa.Selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.Java:52)
at org.openqa.Selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.Java:197)
at org.openqa.Selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.Java:184)
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:151)
at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
at Java.lang.Thread.run(Thread.Java:662)
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:58)
... 9 more
**Caused by: Java.lang.IllegalStateException: The path to the chromedriver executable must be set by the webdriver.chrome.driver system property**
at com.google.common.base.Preconditions.checkState(Preconditions.Java:172)
at org.openqa.Selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.Java:90)
at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:107)
... 14 more
**15:17:05.659 WARN - Exception: The path to the chromedriver executable must be set by the webdriver.chrome.driver system property**
XvfbおよびSeleniumサーバーの起動に使用されるpom.xmlは、次のものです(xvfbおよびSeleniumに関連する部分の抜粋):
<properties>
<!-- Dependencies -->
<Selenium-version>2.21.0</Selenium-version>
<Selenium-plugin-version>2.3</Selenium-plugin-version>
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>${Selenium-version}</version>
</dependency>
...。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>Selenium-maven-plugin</artifactId>
<version>${Selenium-plugin-version}</version>
<configuration>
<background>true</background>
<port>14444</port>
</configuration>
<executions>
<execution>
<id>xvfb</id>
<phase>pre-integration-test</phase>
<goals>
<goal>xvfb</goal>
</goals>
….
<execution>
<id>start-Selenium-server</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start-server</goal>
</goals>
</execution>
私は昨日同じエラーがありました:
Exception: The path to the chromedriver executable must be set by the webdriver.chrome.driver system property**
ノードマシンのパスにchromedriver.exeを追加することで解決しました。 ( https://code.google.com/p/chromedriver/downloads/list )しかし、Firefoxを起動しようとすると、この問題が発生するのは奇妙です...
npm install chromedriver
同じ問題がありました、それは私のために働きました。