升级到 3.9 版后无法启动 Selenium IE 驱动程序

Can#39;t launch Selenium IE Driver after upgrading to version 3.9(升级到 3.9 版后无法启动 Selenium IE 驱动程序)

本文介绍了升级到 3.9 版后无法启动 Selenium IE 驱动程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从 这里<更新到 64 位的 IEDriverServer 3.9 后/a>,尝试使用 IE(版本:11.0.9600.17842,Win8.1)运行任何测试时出现以下异常.有谁知道如何解决这个问题,还是我应该降级回 3.8?

After updating to IEDriverServer 3.9 for 64-bit from here, I'm getting the following exception when trying to run any tests with IE (version: 11.0.9600.17842, Win8.1). Does anyone know how to get around this, or should I just downgrade back to 3.8?

OpenQA.Selenium.WebDriverException : 响应为空的异常向远程 WebDriver 服务器发送 HTTP 请求时抛出网址 http://localhost:53379/session.

OpenQA.Selenium.WebDriverException : A exception with a null response was thrown sending an HTTP request to the remote WebDriver server for URL http://localhost:53379/session.

异常的状态是ReceiveFailure,消息是:底层连接是关闭:接收时发生意外错误.---->

The status of the exception was ReceiveFailure, and the message was: The underlying connection was closed: An unexpected error occurred on a receive. ---->

System.Net.WebException:底层连接已关闭:一个接收时发生意外错误.----> System.IO.IOException:无法从传输连接读取数据:现有连接被远程主机强行关闭.---->System.Net.Sockets.SocketException :现有连接是被远程主机强行关闭 TearDown :System.NullReferenceException:对象引用未设置为对象的实例.

System.Net.WebException : The underlying connection was closed: An unexpected error occurred on a receive. ----> System.IO.IOException : Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ----> System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host TearDown : System.NullReferenceException : Object reference not set to an instance of an object.

堆栈跟踪如下:

结果堆栈跟踪:在OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo请求信息)在OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(命令commandToExecute) 在OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(命令commandToExecute) 在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串driverCommandToExecute,Dictionary`2 参数)在OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities所需能力)在OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutorcommandExecutor,ICapabilities 期望能力)在OpenQA.Selenium.IE.InternetExplorerDriver..ctor(InternetExplorerDriverService服务,InternetExplorerOptions 选项)在OpenQA.Selenium.IE.InternetExplorerDriver..ctor()--WebException at System.Net.HttpWebRequest.GetResponse() at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo请求信息)--IOException at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) atSystem.Net.PooledStream.Read(Byte[] 缓冲区,Int32 偏移量,Int32 大小)在 System.Net.Connection.SyncRead(HttpWebRequest 请求,布尔值userRetrievedStream, Boolean probeRead)--SocketException at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) atSystem.Net.Sockets.NetworkStream.Read(Byte[] 缓冲区,Int32 偏移量,int32 大小)

Result StackTrace: at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo) at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute) at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute) at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) at OpenQA.Selenium.IE.InternetExplorerDriver..ctor(InternetExplorerDriverService service, InternetExplorerOptions options) at OpenQA.Selenium.IE.InternetExplorerDriver..ctor() --WebException at System.Net.HttpWebRequest.GetResponse() at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo) --IOException at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead) --SocketException at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)

推荐答案

使用 IEDriverServer 3.9.0.0 for Windows 64-bit from http://selenium-release.storage.googleapis.com 我可以使用 IEDriverServer_x64_3.9.0 重现该问题.

Using IEDriverServer 3.9.0.0 for Windows 64-bit from http://selenium-release.storage.googleapis.com I am able to reproduce the issue with IEDriverServer_x64_3.9.0.

错误堆栈跟踪:

Started InternetExplorerDriver server (64-bit)
3.9.0.0
Listening on port 28286
Only local connections are allowed
Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:28286
Build info: version: '3.9.1', revision: '63f7b50', time: '2018-02-07T22:42:28.403Z'
System info: host: 'ATECHM-03', ip: '192.168.1.35', os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.8.0_144'
Driver info: driver.version: InternetExplorerDriver
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
    at org.openqa.selenium.ie.InternetExplorerDriver.run(InternetExplorerDriver.java:223)
    at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:215)
    at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:152)
    at demo.A_IE_simple.main(A_IE_simple.java:13)
Caused by: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:28286
    at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:240)
    at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:158)
    at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:256)
    at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:134)
    at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:113)
    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:125)
    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:104)
    at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:54)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:101)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:138)
    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:125)
    at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:238)
    ... 29 more

虽然使用 IEDriverServer_Win32_3.9.0 的快速测试没有显示任何错误.虽然 IEDriverServer_Win32_3.9.0IEDriverServer_x64_3.9.0 已发布,但从未明确推送/发布下载 标签的 seleniumhq.org 页面.

Though a quick test with IEDriverServer_Win32_3.9.0 doesn't shows any error. Though IEDriverServer_Win32_3.9.0 and IEDriverServer_x64_3.9.0 are put up but was never explicitly pushed/published to be available on the Download tab of seleniumhq.org page.

CHANGELOGIEDriverServer.exe 中明确提到了以下免责声明:

The CHANGELOG of IEDriverServer.exe clearly mentions the following disclaimer :

The "major" and "minor" fields are synchronized to releases of the Selenium
project. Changes in the "build" field indicate interim releases made publicly
available via the project downloads page. Changes in "revision" field indicate
private releases checked into the prebuilts directory of the source tree, but
not made generally available on the downloads page.

此外,CHANGELOGIEDriverServer.exe v3.9.0.1 的 a> 提到了以下免责声明:

Additionally, the CHANGELOG of IEDriverServer.exe v3.9.0.1 mentions the following disclaimer :

Finally, there is every chance that, despite all efforts to the contrary,
it's possible that there are new regressions introduced by this change.
Multiple test suites have been run using this change, and none have
failed thus far due to the changes herein. Claims that this change is
causing a specific failure should be accompanied by a full test case, or
issues reported against this change will be summarily closed.

解决方案

简单的解决方案是:

Solution

The simple solution would be either to :

  • 在 32 位和 64 位平台上使用 IEDriverServer_Win32_3.9.0.
  • 恢复到 IEDriverServer_x64_3.8.0

这篇关于升级到 3.9 版后无法启动 Selenium IE 驱动程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:升级到 3.9 版后无法启动 Selenium IE 驱动程序

基础教程推荐