当前位置: 首页 > 知识库问答 >
问题:

无法通过Selenium Grid2使用RemoteWebDriver(Ghost、Phantom)

夏侯阳
2023-03-14

我今天试了GhostDriver和Phantomjs。当我使用GhostDriver时,它工作得很好。像这样开始

phantomjs——webdriver=8910那么

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

我的selenium测试用例可以通过。

然后我尝试使用Selenium2Grid,所以我启动了Selenium2Grid独立服务器作为中心:

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

然后将Ghost Driver注册到集线器

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

重新运行selenium测试用例,我认为它会很好地工作,但异常抛出:

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)

我调试到代码中,发现在Remote teWebDriver.class中,响应的是Selenium Grid Page的源代码(http://localhost:4444)应该是这样的MAP Object(下面是我直接使用Ghost Driver时得到的):[Platform=windows-7-32bit,接纳SslCerts=false, javascriptEnable=true, BrowserName=phantomjs, Rotable=false, locationContextEnable=false, version=phantomjs-1.8.1 ghostdry-1.0.2,数据库启用=false, cssSelector启用=true, handlesAlerts=false, BrowserConnectionEnable=false, webStorageEnable=false,代理={proxyType=Direct}, nativeEvents=true, Application ationCacheEnable=false, takesScreenshot=false]

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


共有2个答案

司马高昂
2023-03-14
匿名用户

我有一个类似的问题,解决方法就是使用URL(“http://localhost:4444/wd/hub“”而不是URL(“”http://localhost:4444/“”

叶经略
2023-03-14
  1. java-jarselenium-server-standalone-2.31.0.jar-角色集线器-运行硒网格集线器
  2. phantomjs--webDrive=8080--webdrive-selenium-grid-hub=http://localhost:4444-在端口8080上运行webDrive并与selenium grid集成
  3. new Remote teWebDriver(new URL("超文本传输协议://{lh或远程ip}: 8080"), dCap);在dCap中运行PhanJSDriver必须是phantomjs功能
 类似资料:
  • 问题内容: 我将硒与PhantomJs配合使用来抓取URL。我如下初始化了驱动程序 从驱动程序获得的页面源为空 我有什么想念的吗? 问题答案: 最近,POODLE漏洞迫使网站删除SSLv3支持。由于PhantomJS<v1.9.8默认情况下使用SSLv3,因此无法加载页面。要解决此问题,您需要使用或运行PhantomJS。请参阅此答案以获取纯PhantomJS。 如果这样不能解决问题,您还可以添加

  • 问题内容: 我正在尝试使用Amazon S3 API加密和上传文件。 如果 我不将我的 托拉斯 作为参数 传递 给我的应用程序,那会 很好 。 但是,如果 我使用我的托管人初始化我的应用程序, 如下所示: 它给了我这个错误: 如何解决此错误? 问题答案: 您的信任库没有用于保护AWS API的证书颁发机构。您需要创建一个新的信任库,并将其与AWS所需的信任库结合在一起。最简单的方法是与JRE中的密

  • 问题内容: 以下是我运行时遇到的错误: 问题答案: 在没有空格的路径中创建您的virtualenv环境。这就是为什么它发生的原因: 创建环境时,它会建立一个目录。在该目录中是与环境有关的所有可执行文件。有些是脚本。如您所知,hashbang用来告诉系统使用什么解释程序来运行脚本。您可能经常在脚本顶部看到此信息: 如果脚本位于,则告诉系统运行以下命令来执行脚本: 就您而言,virtualenv正在创

  • 问题内容: 我正在尝试在C#中使用Selenium RemoteWebDriver,基本上我要做的就是在javascript完成对DOM的操作 后 以编程方式抓取网页的html (不弹出浏览器窗口。) 首先,我像这样启动selenium-server.jar: C:\ Program Files \ selenium-server > java -jar“ C:\ Program Files \

  • Ghost 是一个开源的博客平台,  可以把他看作 WordPress 的一个挑战者. 现阶段的 WordPress 已经可以明显感觉到有些臃肿不堪, 无论是构架, 设计,  还是实现处处都显示出这是一个 10 年前就诞生的项目, 尤其是最近几个版本更新, 几乎都只是在功能和交互层面作出改进,  而看不到本质上的进步和优化. 因此我更愿意把 Ghost 看作 WordPress 的继任者. 同时,

  • 问题内容: 以下是使用Java的WebDriver代码段: 执行代码后,出现以下异常: 线程“主”中的异常org.openqa.selenium.NoSuchElementException:无法找到元素:{“方法”:“ xpath”,“选择器”:” // html / body / div [2] / span / center / form / table / tbody / tr / td