我正在使用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
答案 0 :(得分:5)
这是一条警告信息。 IE驱动程序的本机代码(C ++)组件包括HTTP服务器,因为驱动程序使用JSON Wire Protocol进行通信。该HTTP服务器需要很少的时间来启动并准备好接收HTTP请求。但是,RemoteWebDriver
的HTTP客户端(请记住InternetExplorerDriver
是RemoteWebDriver
的子类)无法准确知道该服务器何时可用,因此会导致竞争条件。 HTTP客户端必须轮询服务器,直到收到有效响应。当您看到此警告时,它只告诉您内部HTTP服务器尚未完成初始化,并且HTTP客户端已丢失竞争。它应该是无害的,你应该能够安全地忽略它。
答案 1 :(得分:0)
由于此消息对于大多数情况并不重要,因为它是已知的竞争条件,因此您可以通过使用此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