Не удается запустить драйвер Selenium IE после обновления до версии 3.9

После обновления до IEDriverServer 3.9 для 64-битной версии, я получаю следующее исключение при попытке запустить любые тесты с IE (версия: 11.0.9600.17842, Win8.1). Кто-нибудь знает, как обойти это, или мне просто вернуться к 3.8?

OpenQA.Selenium.WebDriverException: было сгенерировано исключение с нулевым ответом при отправке HTTP-запроса на удаленный сервер WebDriver для URL http://localhost:53379/session.

Состояние исключения было ReceiveFailure, и сообщение было: Основное соединение было закрыто: При получении произошла непредвиденная ошибка. ---->

System.Net.WebException: базовое соединение было закрыто: при получении произошла непредвиденная ошибка. ----> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. ----> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом. TearDown: System.NullReferenceException: Ссылка на объект не установлена ​​на экземпляр объекта.

Трассировка стека выглядит следующим образом:

Результат StackTrace: в OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo) в OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(команда commandToExecuExteri.Exe.Exe.Exe.Exe.Exe.Exe.Exeutor.Sec.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 параметры) в OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities wantedCapabilities) в OpenQA.Selenium.Remote.RemoteWebDriver..ctor желаемая команда OpenEQCecutor.IE.InternetExplorerDriver..ctor(служба InternetExplorerDriverService, параметры InternetExplorerOptions) в OpenQA.Selenium.IE.InternetExplorerDriver..ctor() - Исключение WebExp. (HttpRequestInfo requestInfo) - Исключительная ситуация в System.Net.Sockets.NetworkStream.Read(буфер Byte[], смещение Int32, Размер Int32) в System.Net.PooledStream.Read(буфер Byte[], смещение Int32, размер Int32) в System.Net.Connection.SyncRead (запрос HttpWebRequest, логический userRetrievedStream, логический probeRead) --SocketException в System.Net.Sockets.Socket.Receive (буфер Byte[], смещение Int32, размер Int32, SocketFlags socketFlags) в System.Net.Sockets.NetworkStream.Read(буфер Byte[], смещение Int32, размер Int32)

1 ответ

Используя IEDriverServer 3.9.0.0 для 64-битной Windows с http://selenium-release.storage.googleapis.com/index.html?path=3.9/ я могу воспроизвести проблему с 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.0 и IEDriverServer_x64_3.9.0 выставлены, но их никогда явно не нажимали и непубликовали, чтобы они были доступны на вкладке " Загрузка " на странице https://docs.seleniumhq.org/.

В CHANGELOG IEDriverServer.exe четко упоминается следующее заявление об отказе от ответственности:

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.

Кроме того, в CHANGELOG IEDriverServer.exe v3.9.0.1 упоминается следующий отказ от ответственности:

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.

Решение

Простым решением будет либо:

  • Используйте IEDriverServer_Win32_3.9.0 на 32-битной и 64-битной платформах.
  • Вернуться к IEDriverServer_x64_3.8.0
Другие вопросы по тегам