2014-10-09 61 views
3

內的情景我一直運行到與這裏描述下的C#硒綁定了一個問題:Selenium Error - The HTTP request to the remote WebDriver timed out after 60 seconds裹specflow的try-catch

其中超時異常偶爾拋出運行時我硒測試。這些測試都是使用規範流程編寫的,我很想有辦法來捕獲該異常,並將該測試作爲特定異常的不確定性(而不是失敗)返回。

有誰知道在try catch塊中包裝每個spec流場景的方法嗎?這可能嗎?還是一種自動捕獲此異常而不必將每個單獨的步驟定義包裝在try catch塊中的方法?

謝謝!

+0

哎呀。這聽起來很糟糕。我想要那些測試失敗。如果測試超時,會得到明顯的「不確定」,並且會遇到錯誤。一位開發人員看着測試報告,說:「哦,我們有一個不確定的測試,沒有失敗,讓我們發送代碼。」這是錯誤如何使其生產。 – 2014-11-25 21:39:15

+0

我的工作流程涉及我在發佈任何內容之前對失敗/不確定測試進行分類。對於我來說,沒有結果意味着這一點 - 沒有足夠的信息知道它是否真的失敗。在這種情況下,測試要麼是不穩定或是實際的錯誤 - 沒有進一步調查就沒有辦法知道。因此,將其標記爲不確定對我來說更有意義。 – GKS1 2014-12-04 20:21:30

回答

8

我找到了解決此問題的方法,我可以在每次使用[AfterStep]綁定後檢查異常。這適用於我,而且失敗的測試現在被標記爲不確定:

[AfterStep] 
    public void check() 
    { 
     var exception = ScenarioContext.Current.TestError; 
     if (exception is WebDriverException 
      && exception.Message.Contains("The HTTP request to the remote WebDriver server for URL ")) 
     { 
      Assert.Inconclusive(exception.Message); 
     } 
    } 

希望有人認爲這有幫助!