5

Otrzymałem wyjątek po próbie ustawienia połączenia z selenem-serwerem-autonomicznym przy użyciu remoteWebDriver w teście aplikacji napisanym w Javie.Selenium remoteWebDriver: połączenie z awarią selenu-autonomicznego serwera (nieznana wersja sterownika)

Problem związany jest z używaniem remoteWebDriver uruchamiającym selen-serwer-autonomiczny (z Xvfb) za pomocą maven (ponieważ poprzez ręczne uruchamianie przez inną sesję Xvfb, a następnie samodzielny serwer selenowy działa test aplikacji). Środowisko składa się z RH Linux R4.1.x, Selenium 2.1, firefox 3.6. Zarówno selen-serwer-autonomiczny, jak i test aplikacji są wykonywane na tym samym komputerze (maszyna wirtualna).

Jak wcześniej wspomniano, test aplikacji pomyślnie łączy się z instancją selenium-server-standalone-2.21.0, jeśli wystąpienie to jest uruchamiane przez osobną sesję PUTTY (oddzielną od tej używanej do uruchamiania testu aplikacji) z następujące polecenia:

#Xvfb :20 & 
#export DISPLAY=:20 
#Java –Dwebdriver.firefox.firefox=“/opt/firefox/firefox” –jar selenium-server-standalone-2-.21.0.jar -port 4441. 

Kod Test aplikacji do łączenia się selenu-server-standalone jest następujący:

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); 

teraz próbuje użyć Maven do uruchamiania również Xvfb i selen-server-stand alone przed gwiazdą ting testy aplikacji pojawia się następujący błąd (potem w tej samej sesji kit):

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** 

pom.xml wykorzystywane do uruchamiania Xvfb i selen serwera jest następujący jeden (ekstrakt z części dotyczącej Xvfb i selenu):

<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> 
+0

Dlaczego używasz starej wersji? – Arran

+0

Czy polecasz Firefoksa? lub selen? lub plugin Maven? czy wszystko? W każdym razie jest to środowisko używane do uruchamiania testu integracji. Czy znasz jakieś ograniczenia lub niezgodności w tych używanych wersjach? –

+0

Głównie selenu. Aby umieścić to w kontekście, v2.21 Selenium pochodzi z połowy 2011 roku. Oczywiście stara wersja może nie być przyczyną twoich problemów, ale jestem bardziej ciekawy, dlaczego używasz starej wersji - w ten sam sposób, dlaczego ludzie nadal używaj Win98/ME. – Arran

Odpowiedz

2

miałem ten sam błąd wczoraj:

Exception: The path to the chromedriver executable must be set by the webdriver.chrome.driver system property** 

Rozwiązałem go, dodając chromedriver.exe na ścieżce komputera węzła. (https://code.google.com/p/chromedriver/downloads/list) Ale to dziwne mieć ten problem, jeśli starają się uruchomić Firefoksa ...

+0

Thans Stephane. Nie próbowałem rozwiązania, które zaadoptowałeś, ponieważ w międzyczasie rozwiązałem go przez obniżenie wersji wtyczki selenu z wersji 2.3 do 2.2, teraz test poprawnie łączy się z serwerem Selenium. Rozważam zamknięcie tego problemu. –

0
npm install chromedriver 

miał ten sam problem, który pracował dla mnie.