2012-11-07 62 views
2

我正在使用一套Selenium WebDriver(不是Selenium RC並且不使用Selenium-Server)測試,這些測試正在通過命令行調用MSTest 。我已經將它們分成了測試類,針對我們計劃測試的每個瀏覽器(Chrome,Firefox和IE9),並且每個測試類都有一個啓動方法,用於登錄到被測系統,然後執行請求的測試和一個使用WebDriver.Quit()關閉瀏覽器的TearDown方法。Selenium WebDriver測試失敗,System.Net.WebException無法連接

在我的開發機器上,所有的東西都是hunky-dory,但是在我們的構建機器上,類初始化/啓動方法執行得很好並且登錄到站點,但只要第一次實際測試開始,測試運行器就會關閉錯誤消息:

OpenQA.Selenium.WebDriverException: Unexpected error. System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:59982 

顯然端口會根據所測試的瀏覽器而變化;當我運行整個套件時,我在不同的端口上收到IE,Firefox和Chrome測試的錯誤 - 每個瀏覽器有兩個錯誤(因爲套件目前每個瀏覽器有兩個測試)

Windows防火牆已關閉建立機器,並在運行測試之前檢查netstat顯示該端口未被使用;如果我調試測試並在啓動代碼運行之後但在測試運行之前停止,那麼當然該端口正在使用中。 127.0.0.1和localhost也是一樣的。

無論我是否通過命令行調用測試,使用VS Test工具在Visual Studio中運行/調試它,還是執行通過Process.Start調用MSTest的控制檯應用程序,我都會得到相同的錯誤( )。第一次FindElement()調用引發異常。

我在哪裏可以開始尋找,找出爲什麼這是失敗的生成機器,而不是我的開發盒?

回答

3

這裏的問題是,在嘗試在啓動過程中實現一些更強大的錯誤處理時,我將調用放在try/catch的finally塊中的Teardown代碼中,以便在測試用例完成日誌記錄後,我正在關閉並清理WebDriver實例,所以當測試運行時,沒有可與之通信的WebDriver。

我懷疑當我在我的開發機器上查看「相同」代碼時,實際上運行的庫中沒有該塊。

+0

顯然我是一個皇家麻婆婆。我可以讓我回到8小時嗎? – cori

+2

那麼,我的頭骨也有點麻木 - 我沒有做完全相同的事情,但我把我的瀏覽器對象藏在一個靜態變量中,所以一個測試試圖使用創建的瀏覽器對象(和在之前的測試中處理)。同樣的錯誤。你的錯誤幫助我指出了正確的方向。 –

0

當您從Visual Studio運行應用程序時,它啓動偵聽某個端口的服務器。在你的情況下59982.

在運行測試之前,你需要確實讓自己的Web應用程序在測試環境中獨立運行。

在您的開發機器上,您的應用程序正在該端口上運行。我猜你的遠程機器並非如此。

+0

我不認爲是這樣;我在帖子中添加了一個說明,但顯示的端口是WebDriver實例的端口,而不是VS2010啓動的Cassini服務器。在測試運行期間檢查netstat顯示正在使用的端口。也沒有解釋爲什麼WebDriver實例在啓動並登錄後卻無法連接到測試運行時。 – cori

相關問題