【问题标题】:Can't launch Selenium IE Driver after upgrading to version 3.9升级到 3.9 版后无法启动 Selenium IE 驱动程序
【发布时间】:2018-07-31 10:37:52
【问题描述】:

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

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

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

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

堆栈跟踪如下:

结果堆栈跟踪:在 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(ICommandExecutor commandExecutor,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) at System.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) at System.Net.Sockets.NetworkStream.Read(Byte[] 缓冲区,Int32 偏移量, int32 大小)

【问题讨论】:

  • 了解 32 位可执行文件是否产生相同的结果会很有用。
  • @JimEvans 让我们大吃一惊,IEDriverServer_Win32_3.9.0 在基本测试用例中工作得非常顺利。

标签: c# unit-testing selenium webdriver iedriverserver


【解决方案1】:

IEDriverServer 3.9.0.0 用于来自http://selenium-release.storage.googleapis.comWindows 64 位 我能够通过 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 页面的 Download 选项卡。

IEDriverServer.exeCHANGELOG 明确提到了以下免责声明:

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.

另外,IEDriverServer.exe v3.9.0.1CHANGELOG 提到了以下免责声明:

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.

解决方案

简单的解决方案是:

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

【讨论】:

  • 我不得不否决这个答案。它错误地暗示 原始帖子中提到的 3.9.0 版本之后所做的更改可能会导致问题描述的问题。它还声称何时“正式发布”了未经 Selenium 项目开发团队认可或承认为正确的版本。
  • @JimEvans 感谢您的关注。但是这两个逐字记录都来自 IEDriverServer.exe 的 CHANGELOG。你能指出我到底错在哪里。 IEDriverServer.exe v3.9.0.0 的可用性尚未进入 seleniumhq.org 页面的 Download 选项卡,因为 CHANGELOG 已移至 IEDriverServer.exe v3.9.0.3。我很乐意纠正自己。
  • 发布到official drop site的版本是3.9.0.0。正如您在 CHANGELOG 中正确注意到的那样,版本的编号方案为 major.minor.build.revision,仅在 revision 字段中不同的版本根本不会发布。此外,向该站点发布版本是“发布版本”的总和,无论可以通过 seleniumhq 下载什么。您的意思是 3.9.0.1 中的更改可能会影响从放置站点的发布,即 3.9.0.0
  • @JimEvans 谢谢,这是我的错误假设,所以更新了我的答案。我还有一个问题要问您,当 CHANGELOG 文本提及为 通过项目下载页面 时,是否指向 Download 选项卡或您共享为 official drop site 的链接,截至目前返回错误作为 &lt;Message&gt;The specified bucket does not exist.&lt;/Message&gt;
  • 您的堆栈跟踪似乎表明 Java 语言绑定艺术试图连接 IPv6 环回地址 ([::1]),这在 IE 驱动程序的 3.9.0.0 中根本不起作用.为什么 64 位 IE 驱动程序会出现这种情况而不是 32 位驱动程序是完全不清楚的。
猜你喜欢
  • 2020-06-25
  • 2016-10-12
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多