我正在使用 selenium 向 HTTP 服务器发送 HTTP 请求,并且在通过相同的 IP/端口(127.0.0.1:8080)关闭并重新打开来自测试代码的连接后出现以下错误。我很确定 HTTP 服务器应用程序在退出时正在关闭服务器套接字,但是我不太确定测试(客户端)代码是否正在关闭套接字。
我的 RemoteWebDriver 实现如下,我猜它可能需要重写stopClient()
才能关闭套接字,但是用什么?
public class MyWebDriver extends RemoteWebDriver {
public MyWebDriver(URL url, Capabilities desiredCapabilities) {
super(new MyCommandExecutor(url), desiredCapabilities);
}
public Response sendCommand(String command){
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("command", command);
Response response = execute("sendCommand", parameters);
return response;
}
}
org.openqa.selenium.remote.UnreachableBrowserException:无法启动新会话。可能的原因是远程服务器地址无效或浏览器启动失败。构建信息:版本:'2.44.0',修订:'76d78cf323ce037c5f92db6c1bba601c2ac43ad8',时间:'2014-10-23 13:11:40' 系统信息:主机:'...',ip:'172.27.3.221', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.1', java.version: '1.7.0_67' 驱动程序信息: driver.version: MyWebDriver at org.openqa。 selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:593) 在
...
引起:org.apache.http.conn.HttpHostConnectException:连接到 127.0.0.1:8080 [/127.0.0.1] 失败:连接被拒绝
PS:我应该提到客户端代码可以在大约 30 秒后重新连接到服务器 - 操作系统必须在那之后释放套接字:Mac OSX 上的 Java 进程不释放套接字