Невозможно использовать RemoteWebDriver(Ghost,Phantom) через Selenium Grid2

Сегодня я попробовал GhostDriver и Phantomjs. Когда я использую GhostDriver, он работает хорошо. начни так

phantomjs --webdriver=8910 тогда

new RemoteWebDriver(new URL("http://localhost:8910"), sCaps);

Мой тестовый пример селена может пройти.

Затем я попытался использовать Selenium2Grid, поэтому я запускаю автономный сервер selenium в качестве концентратора:

D:\_Try\selenium>java -jar selenium-server-standalone-2.31.0.jar -role hub
2013-3-20 14:13:49 org.openqa.grid.selenium.GridLauncher main
信息: Launching a selenium grid server
2013-03-20 14:13:50.026:INFO:osjs.Server:jetty-7.x.y-SNAPSHOT
2013-03-20 14:13:50.060:INFO:osjsh.ContextHandler:started o.s.j.s.ServletContextHandler{/,null}
2013-03-20 14:13:50.068:INFO:osjs.AbstractConnector:Started [email protected]:4444

затем зарегистрируйте GhostDriver в хабе

C:\Users\administrator>phantomjs  --webdriver=8910 --webdriver-selenium-grid-hub=http://localhost:4444
PhantomJS is launching GhostDriver...
Ghost Driver running on port 8910
Registered with grid hub: http://localhost:4444/ (ok)

затем я проверил регистрацию через консоль Grid: http://localhost:4444/grid/console и обнаружил, что phantomjs уже зарегистрирован. поэтому я изменил код, клиент должен посетить сетку:

new RemoteWebDriver(new URL("http://localhost:4444"), sCaps);

повторно запустите тестовый пример селена, я думал, что он будет работать хорошо, но выдает исключение:

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:218)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:129)
    at net.pipitest.selenium.trial.ghost.BaseTest.prepareDriver(BaseTest.java:117)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)

Я отладил код и обнаружил, что в RemoteWebDriver.class ответом является исходный код Selenium Grid Page (http://localhost:4444), который должен быть таким объектом MAP (ниже показано, что я получаю при непосредственном использовании GhostDriver): [platform= windows-7-32bit, acceptSslCerts=false, javascriptEnabled=true, browserName=phantomjs, rotatable=false, locationContextEnabled=false, version=phantomjs-1.8.1+ghostdriver-1.0.2, databaseEnabled=false, cssSelectorsEnabled=true, handlesAlerts= false, browserConnectionEnabled=false, webStorageEnabled=false, proxy={proxyType=direct}, nativeEvents=true, applicationCacheEnabled=false, takeScreenshot=false]

Кто-нибудь сталкивается с этой проблемой раньше? Или какие-либо предложения? Заранее спасибо.


person Dan    schedule 20.03.2013    source источник
comment
Удачи в этой проблеме?   -  person Pradeep Kumar Mishra    schedule 02.01.2014


Ответы (2)


  1. java -jar selenium-server-standalone-2.31.0.jar -role hub - запустить концентратор селеновой сетки
  2. phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=http ://localhost:4444 - запуск вебдрайвера на порту 8080 и интеграция с селеновой сеткой
  3. new RemoteWebDriver(new URL("http://{lh or remote ip}:8080"), dCap); запуск PhanomJSDriver в dCap должен быть с поддержкой phantomjs
person Denis    schedule 04.04.2013

У меня была аналогичная проблема, и решение было просто использовать URL("http://localhost:4444/wd/hub") вместо URL("http://localhost:4444/")

person user3076252    schedule 17.06.2014