org.openqa.selenium.WebDriverException:java.net.ConnectException:无法使用GeckoDriver和selenium连接到localhost/0:0:0:0:0:0:1:1941

org.openqa.selenium.WebDriverException:java.net.ConnectException:无法使用GeckoDriver和selenium连接到localhost/0:0:0:0:0:0:1:1941,java,selenium,firefox,geckodriver,selenium-firefoxdriver,Java,Selenium,Firefox,Geckodriver,Selenium Firefoxdriver,我试图使用Eclipse编写一个简单的自动化测试,但在设置时遇到了问题。我无法启动firefox。下面是我的代码,后面是错误堆栈 代码: 错误堆栈:这是我尝试在ECLIPSE中运行代码时控制台窗口中显示的内容 Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:1941

我试图使用Eclipse编写一个简单的自动化测试,但在设置时遇到了问题。我无法启动firefox。下面是我的代码,后面是错误堆栈

代码:

错误堆栈:这是我尝试在ECLIPSE中运行代码时控制台窗口中显示的内容

Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:1941
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'LAPTOP-P3SB6R8A', ip: '192.168.1.6', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: driver.version: FirefoxDriver
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
    at cucumberTest.seleniumTest.main(seleniumTest.java:18)
Caused by: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:1941
    at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247)
    at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165)
    at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
    at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
    at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
    at okhttp3.RealCall.execute(RealCall.java:77)
    at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:103)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:105)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    ... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at okhttp3.internal.platform.Platform.connectSocket(Platform.java:129)
    at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245)
    ... 28 more
线程“main”org.openqa.selenium.WebDriverException:java.net.ConnectException:未能连接到本地主机/0:0:0:0:0:1:1941中出现异常 构建信息:版本:“3.141.59”,修订版:“e82be7d358”,时间:“2018-11-14T08:25:53” 系统信息:主机:'LAPTOP-P3SB6R8A',ip:'192.168.1.6',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_161' 驱动程序信息:Driver.version:FirefoxDriver 位于org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92) 位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 位于org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213) 位于org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:131) 位于org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:147) 位于org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:125) 在cucumberTest.seleniumTest.main(seleniumTest.java:18) 原因:java.net.ConnectException:无法连接到本地主机/0:0:0:0:0:1:1941 位于okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247) 位于okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165) 在okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) 在okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)中 位于okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) 在okhttp3.internal.connection.ConnectionInterceptor.intercept(ConnectInterceptor.java:42)处 在okhttp3.internal.http.RealInterceptorChain.procedure(RealInterceptorChain.java:147) 在okhttp3.internal.http.RealInterceptorChain.procedure(RealInterceptorChain.java:121) 在okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 在okhttp3.internal.http.RealInterceptorChain.procedure(RealInterceptorChain.java:147) 在okhttp3.internal.http.RealInterceptorChain.procedure(RealInterceptorChain.java:121) 位于okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 在okhttp3.internal.http.RealInterceptorChain.procedure(RealInterceptorChain.java:147) 位于okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) 在okhttp3.internal.http.RealInterceptorChain.procedure(RealInterceptorChain.java:147) 在okhttp3.internal.http.RealInterceptorChain.procedure(RealInterceptorChain.java:121) 在okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) 在okhttp3.RealCall.execute(RealCall.java:77) 位于org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:103) 位于org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:105) 位于org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74) 位于org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136) 位于org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) ... 还有6个 原因:java.net.ConnectException:连接被拒绝:连接 位于java.net.DualStackPlainSocketImpl.waitForConnect(本机方法) 位于java.net.DualStackPlainSocketImpl.socketConnect(未知源) 位于java.net.AbstractPlainSocketImpl.doConnect(未知源) 位于java.net.AbstractPlainSocketImpl.connectToAddress(未知源) 位于java.net.AbstractPlainSocketImpl.connect(未知源) 位于java.net.PlainSocketImpl.connect(未知源) 位于java.net.socksocketimpl.connect(未知源) 位于java.net.Socket.connect(未知源) 位于okhttp3.internal.platform.platform.connectSocket(platform.java:129) 位于okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245) ... 28多 有人能帮我找出问题所在吗?

此错误消息

Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:1941
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'LAPTOP-P3SB6R8A', ip: '192.168.1.6', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: driver.version: FirefoxDriver
.
Caused by: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:1941
…表示您的程序无法启动/生成新的GeckoDriver服务

使用Selenium v3.x、GeckoDriver和Firefox启动新的GeckoDriver服务和Firefox浏览器会话时,您需要通过
System.setProperty()
行传递键webdriver.gecko.driver,以及设置为GeckoDriver的绝对路径的值,如下所示:

System.setProperty("webdriver.gecko.driver", "C:\\path\\to\\geckodriver.exe");
driver = new FirefoxDriver();
另外,

  • 您的JDK版本是1.8.0_161,非常旧
  • 您的Selenium客户端版本是v3.141.59
  • 我们不知道你的GeckoDriver版本
  • 我们不知道您的Firefox版本
因此,JDK v8u161和Selenium客户端v3.141.59之间存在明显的不匹配

解决方案
  • 将JDK升级到最新级别
  • 将GeckoDriver升级至标高
  • GeckoDriver位于指定位置
  • GeckoDriver对非root用户具有可执行权限
  • 将Firefox版本升级到Firefox v65.0级别
  • 通过IDE清理项目工作区,并仅使用所需的依赖项重建项目
  • 如果您的基本Web客户端版本太旧,请通过卸载它并安装最新的GA和Web客户端发布版本
  • 重新启动系统
  • 以非root用户身份执行
    测试
  • 始终在
    tearDown(){}
    方法中调用
    driver.quit()
    ,关闭并销毁
    System.setProperty("webdriver.gecko.driver", "C:\\path\\to\\geckodriver.exe");
    driver = new FirefoxDriver();