【问题标题】:Unable to launch IE 11 when running selenium with IEDriverServer 3.9.0.0使用 IEDriverServer 3.9.0.0 运行 selenium 时无法启动 IE 11
【发布时间】:2018-11-16 16:56:02
【问题描述】:

我在运行 selenium 测试时遇到了启动 IE 11 的问题。这是我用来设置浏览器的代码

 if (browser.equalsIgnoreCase("ie")) {
        System.setProperty("webdriver.ie.driver",  "IEDriverServer.exe");
        driver = new InternetExplorerDriver();
    } else {
        throw new Exception("Browser is not correct");
    }
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get("https://www.google.com/");
    Dimension dimension = new Dimension(800,600);
    driver.manage().window().setSize(dimension);
}

我尝试了基于此线程的其他解决方案,但仍然没有运气。 Stack Link。有什么我可以使用的解决方案吗?

环境:
硒版本:3.12.0
IEDriverServer 版本:3.9.0.0
IE版本:11.0.65

控制台输出:

 Started InternetExplorerDriver server (64-bit)
 3.9.0.0
 Listening on port 10696
 Only local connections are allowed

堆栈跟踪:

  org.openqa.selenium.WebDriverException: java.net.SocketException: 
  Connection reset
  Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-      08T14:04:26.12Z'
  System info: host: 'DESKTOP7', ip: '', os.name: '      Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_171'
  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:543)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207)
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 com.dlp.tests.TestCases.Basic_Template.setup(Basic_Template.java:37)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
  Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at okio.Okio$2.read(Okio.java:139)
at okio.AsyncTimeout$2.read(AsyncTimeout.java:237)
at okio.RealBufferedSource.indexOf(RealBufferedSource.java:345)
at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:217)
at okhttp3.internal.http1.Http1Codec.readHeaderLine(Http1Codec.java:212)
at okhttp3.internal.http1.Http1Codec.readResponseHeaders(Http1Codec.java:189)
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:88)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
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:105)
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:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)

【问题讨论】:

  • 我怀疑这是个例外。此堆栈跟踪指向正常执行!
  • @Nilesh 反对你的权利。
  • IMO,有一个问题,请保持我的手指交叉:|
  • @DebanjanB 你在说什么问题?
  • @kav 这个问题是你提出的。您已经告诉我们您面临的问题

标签: java selenium selenium-webdriver internet-explorer-11 iedriverserver


【解决方案1】:

此错误消息...

org.openqa.selenium.WebDriverException: java.net.SocketException: Connection reset

...暗示 IEDriverServer 无法启动/产生新的 WebBrowsing 会话,即 InternetExplorer Browser 会话。

您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:

  • 您的 Selenium 客户端 版本是 2018-05-08T14:04:26.12Z 的 3.12.0,差不多一年了。
  • 您的 InternetExplorerDriver 版本 3.9.0.0。

因此,Selenium Client v3.12.0 和 InternetExplorerDriver v3.9.0.0 之间存在明显的不匹配。根据最佳实践,Selenium Client 和 InternetExplorerDriver 同步发布,您必须使用同一主要版本中的两个二进制文件强>。


另外 InternetExplorerDriver 服务器 v3.9.0.0 根据以下参考资料存在已知问题:

此问题已通过以下提交解决:

解决方案

  • 将 IEDriverServer 升级到当前的IEDriverServer v3.12.0 级别。
  • 清理你的项目工作区通过你的IDE和重建你的项目只需要依赖。
  • 使用CCleaner 工具在执行测试套件之前和之后清除所有操作系统琐事。
  • 进行系统重启。
  • 执行您的@Test。
  • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriver 和 Web Client 实例。

【讨论】:

  • 感谢您的回答。 IE 能够启动,但它会启动此 URL http://localhost:12303/,而不是转到我提供的 URL 并且测试用例失败。你会是什么导致这个问题?我用最新的堆栈跟踪和代码更新了我的帖子。
  • @DebanjanB 你能停止在你的答案中发布任意故障排除提示吗?提出诸如“重新启动”或“运行 ccleaner”之类的建议只会贬低您的答案,并且与所提出的问题完全无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 2015-12-22
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多