不能通过Selenium Grid2使用RemoteWebDriver(Ghost,Phantom)

时间:2013-03-20 06:55:17

标签: phantomjs selenium-grid ghostdriver

我今天尝试过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 SocketConnector@0.0.0.0: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)

然后我通过网格控制台检查了注册: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,rotating = 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,takesScreenshot = false]

以前有人遇到过这个问题吗? 还是有什么建议? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

  1. java -jar selenium-server-standalone-2.31.0.jar -role hub - 运行selenium grid hub
  2. phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=http ://localhost:4444 - 在端口8080上运行webdriver并与selenium grid
  3. 集成
  4. new RemoteWebDriver(new URL("http://{lh or remote ip}:8080"), dCap);在dCap中运行PhanomJSDriver必须是phantomjs功能

答案 1 :(得分:2)

我有类似的问题,解决方案只是使用     URL("http://localhost:4444/wd/hub") 代替     URL("http://localhost:4444/")