在try-catch中包装specflow场景

时间:2014-10-09 18:44:24

标签: c# selenium specflow

我遇到了这里描述的C#selenium绑定问题:Selenium Error - The HTTP request to the remote WebDriver timed out after 60 seconds

在运行我的selenium测试时偶尔会抛出超时异常。这些测试都是使用spec流程编写的,我希望有办法捕获该异常并让测试返回为该特定异常的Inconclusive(而不是失败)。

有没有人知道在try catch块中包装每个规范流场景的方法?这可能吗?或者一种自动捕获此异常的方法,而不必将每个单独的步骤定义包装在try catch块中?

谢谢!

1 个答案:

答案 0 :(得分:9)

我找到了解决此问题的方法,我可以使用[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);
        }
    }

希望有人觉得这很有用!