2012-04-02 101 views
3

我使用Selenium 2.20。爲什麼WebDriver InternetExplorerDriver在啓動瀏覽器時會拋出此警告?在參數化的JUnit測試中,這發生在我身上。每次我調用「new InternetExplorerDriver()」時都會引發警告。重試後,無論它在做什麼,它都會成功進行第二次嘗試。換句話說,我的IE實例在WebDriver中運行之前,tryExecute調用必須運行兩次。WebDriver InternetExplorerDriver:軟件導致連接中止:recv失敗?

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

是 「2.2.0」 一個錯字或真實的東西?你可以嘗試更新Selenium嗎?能夠主動阻止測試和IE之間的連接嗎?畢竟,它是一個套接字連接...防火牆,防病毒? – 2012-04-02 22:05:38

+0

對不起,我的意思是2.20 – djangofan 2012-04-04 02:25:51

+0

是的,Selenium的版本是2.20 – 2013-02-15 11:43:38

回答

5

這是一條警告消息。 IE驅動程序的本地代碼(C++)組件包含一個HTTP服務器,因爲驅動程序使用JSON Wire Protocol進行通信。該HTTP服務器需要少量時間才能啓動並準備好接收HTTP請求。但是,RemoteWebDriver的HTTP客戶端(請記住InternetExplorerDriverRemoteWebDriver的子類)無法準確知道該服務器何時可用,因此會導致競爭狀況。 HTTP客戶端必須輪詢服務器,直到它收到有效的響應。當您看到此警告時,它只會告訴您內部HTTP服務器尚未完成初始化,並且HTTP客戶端已經失去競賽。它應該是無害的,你應該能夠安全地忽略它。

+0

謝謝。我懷疑,但不知道你提供的所有細節。非常感謝。 – djangofan 2012-04-04 02:27:42

0

由於此消息不會對大多數情況下,重要的,因爲它是一個已知的競爭條件,您可以配置java.util.logging中使用此Java代碼中的自定義日誌配置傳遞給忽略它:

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 
相關問題