首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Selenium: http://localhost:4444/wd/hub返回一个NullPointerException,我做错了什么

Selenium: http://localhost:4444/wd/hub返回一个NullPointerException,我做错了什么
EN

Stack Overflow用户
提问于 2017-01-16 18:31:53
回答 2查看 33.6K关注 0票数 7

给定:尝试在RemoteWebDriver中使用C#中的此代码。

代码语言:javascript
复制
var url = new Uri("http://localhost:4444/wd/hub");
var wd = new RemoteWebDriver(url, DesiredCapabilities.Chrome());

上面的新RemoteWebDriver代码在超时之前不会响应.

详细信息

我已经用以下参数启动了我的集线器到Selenium Server:

代码语言:javascript
复制
-jar "C:\SomeFolder\selenium-server-standalone-3.0.1.jar" -port 4444 -role hub

并注册了一个节点使用这些部分..。

代码语言:javascript
复制
-jar "C:\SomeFolder\selenium-server-standalone-3.0.1.jar" -role node -hub http://localhost:4444/grid/register -port 9662 

调试

如果我在启动集线器后输入这个URL,它将显示有一个注册节点:

http://location:4444/grid/console

但是在启动集线器后输入这个url时

http://localhost:4444/wd/hub

浏览器显示了指向ExternalSessionKey.java的java (json)堆栈跟踪。

代码语言:javascript
复制
{"status":13,"value":{"class":"java.lang.NullPointerException","stackTrace":[{"fileName":"ExternalSessionKey.java","className":"org.openqa.grid.internal.ExternalSessionKey","methodName":"fromWebDriverRequest","lineNumber":77},{"fileName":"WebDriverRequest.java","className":"org.openqa.grid.web.servlet.handler.WebDriverRequest","methodName":"extractSession","lineNumber":62},{"fileName":"RequestHandler.java","className":"org.openqa.grid.web.servlet.handler.RequestHandler","methodName":"getSession","lineNumber":231},{"fileName":"RequestHandler.java","className":"org.openqa.grid.web.servlet.handler.RequestHandler","methodName":"process","lineNumber":118},{"fileName":"DriverServlet.java","className":"org.openqa.grid.web.servlet.DriverServlet","methodName":"process","lineNumber":83},{"fileName":"DriverServlet.java","className":"org.openqa.grid.web.servlet.DriverServlet","methodName":"doGet","lineNumber":61},{"fileName":"HttpServlet.java","className":"javax.servlet.http.HttpServlet","methodName":"service","lineNumber":687},{"fileName":"HttpServlet.java","className":"javax.servlet.http.HttpServlet","methodName":"service","lineNumber":790},{"fileName":"ServletHolder.java","className":"org.seleniumhq.jetty9.servlet.ServletHolder","methodName":"handle","lineNumber":808},{"fileName":"ServletHandler.java","className":"org.seleniumhq.jetty9.servlet.ServletHandler","methodName":"doHandle","lineNumber":587},{"fileName":"SessionHandler.java","className":"org.seleniumhq.jetty9.server.session.SessionHandler","methodName":"doHandle","lineNumber":221},{"fileName":"ContextHandler.java","className":"org.seleniumhq.jetty9.server.handler.ContextHandler","methodName":"doHandle","lineNumber":1127},{"fileName":"ServletHandler.java","className":"org.seleniumhq.jetty9.servlet.ServletHandler","methodName":"doScope","lineNumber":515},{"fileName":"SessionHandler.java","className":"org.seleniumhq.jetty9.server.session.SessionHandler","methodName":"doScope","lineNumber":185},{"fileName":"ContextHandler.java","className":"org.seleniumhq.jetty9.server.handler.ContextHandler","methodName":"doScope","lineNumber":1061},{"fileName":"ScopedHandler.java","className":"org.seleniumhq.jetty9.server.handler.ScopedHandler","methodName":"handle","lineNumber":141},{"fileName":"HandlerWrapper.java","className":"org.seleniumhq.jetty9.server.handler.HandlerWrapper","methodName":"handle","lineNumber":97},{"fileName":"Server.java","className":"org.seleniumhq.jetty9.server.Server","methodName":"handle","lineNumber":499},{"fileName":"HttpChannel.java","className":"org.seleniumhq.jetty9.server.HttpChannel","methodName":"handle","lineNumber":310},{"fileName":"HttpConnection.java","className":"org.seleniumhq.jetty9.server.HttpConnection","methodName":"onFillable","lineNumber":257},{"fileName":"AbstractConnection.java","className":"org.seleniumhq.jetty9.io.AbstractConnection$2","methodName":"run","lineNumber":540},{"fileName":"QueuedThreadPool.java","className":"org.seleniumhq.jetty9.util.thread.QueuedThreadPool","methodName":"runJob","lineNumber":635},{"fileName":"QueuedThreadPool.java","className":"org.seleniumhq.jetty9.util.thread.QueuedThreadPool$3","methodName":"run","lineNumber":555},{"className":"java.lang.Thread","methodName":"run","lineNumber":-1}]}}

有人能为我解释堆栈跟踪吗?该怎么做才能起作用呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-19 14:11:39

此问题的症状是此代码中的连接超时异常。

代码语言:javascript
复制
var url = new Uri("http://localhost:4444/wd/hub");
var wd = new RemoteWebDriver(url, DesiredCapabilities.Chrome());

根源

造成这种情况的原因是,在调试过程中,我在此语句之前结束了程序:

代码语言:javascript
复制
wd.Quit();

因为我的集线器只为一个节点配置,所以以前的调试会话在集线器上仍然有一个孤立的会话。重新启动集线器解决了这个问题,但也有配置任意多个节点的能力。

集线器逻辑的另一个错误是,在配置中设置的正确超时中没有清理孤立节点。这导致孤立节点存活的时间远远超过超时的时间.查看配置选项,以便自己查看。应该有一个不活动的计时器,上面写着“如果x秒中没有活动”,就会杀死会话。

One解决方案

确保(至少)配置集线器以允许调试解决方案时需要的更多节点。

票数 2
EN

Stack Overflow用户

发布于 2017-01-17 03:26:23

你的结局没什么不对的。

URL http://localhost:4444/wd/hub的设计使得它期望您的操作有一个有效负载。由于您没有提供所需的有效负载,所以您正在看到一个NullPointerException。

此URL不应在浏览器中打开。它的意思是通过Http操作来使用它,并有一个符合硒w3c规范的正确的有效负载。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41682885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档