【问题标题】:WebDriver InternetExplorerDriver: Software caused connection abort: recv failed?WebDriver InternetExplorerDriver:软件导致连接中止:recv 失败?
【发布时间】:2012-04-15 17:21:40
【问题描述】:

我正在使用 Selenium 2.20 。为什么 WebDriver InternetExplorerDriver 在启动浏览器时会抛出此警告?这是在参数化 JUnit 测试期间发生在我身上的。每次我调用 "new InternetExplorerDriver()" 时都会引发警告。在它重试之后,无论它在做什么,它都会在第二次尝试时成功。因此,换句话说,在我的 IE 实例在 WebDriver 中运行之前,tryExecute 调用必须运行两次。

org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: I/O exception (java.net.SocketException) caught when processing request: 
        Software caused connection abort: recv failed
org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: Retrying request

【问题讨论】:

  • “2.2.0”是错字还是真实的东西?您可以尝试更新 Selenium 吗?有什么东西可以主动阻止测试和 IE 之间的连接吗?毕竟是Sockets连接……防火墙、杀毒?
  • 是的,Selenium 的版本是 2.20

标签: selenium internet-explorer-8 webdriver


【解决方案1】:

由于此消息在大多数情况下并不重要,因为它是已知的竞争条件,您可以通过使用此 Java 代码传入自定义日志配置来配置 java.util.logging 以忽略它:

LogManager.getLogManager().readConfiguration(
  getClass().getResourceAsStream(
    "/META-INF/logger.properties"));

还有一个文件META-INF/logger.properties

handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
org.apache.http.impl.client.DefaultHttpClient.level=WARNING

【讨论】:

    【解决方案2】:

    这是一条警告消息。 IE 驱动程序的本机代码 (C++) 组件包括一个 HTTP 服务器,因为驱动程序使用JSON Wire Protocol 进行通信。该 HTTP 服务器需要很短的时间来启动并准备好接收 HTTP 请求。但是,RemoteWebDriver 的 HTTP 客户端(请记住,InternetExplorerDriverRemoteWebDriver 的子类)无法准确知道该服务器何时可用,因此这会导致竞争条件。 HTTP 客户端必须轮询服务器,直到它收到有效的响应。当您看到此警告时,它只是告诉您内部 HTTP 服务器尚未完成其初始化,并且 HTTP 客户端已失去竞争。它应该是无害的,您应该可以放心地忽略它。

    【讨论】:

    猜你喜欢
    • 2019-07-28
    • 2010-09-13
    • 2012-02-20
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2011-02-03
    • 2016-07-09
    • 2011-10-09
    相关资源
    最近更新 更多