枚举返回后无法访问的代码

时间:2013-03-13 09:54:53

标签: c#

嗨,我有一个emun,它将通过if和if语句进行测试。

public enum Test_Criteria
    {
        Pass,
        Warning,
        Fail
    }

运行if语句后

if (driver.Url.Contains("Postcode.aspx?type=billing&mode=guest"))
        {

            return Test_Criteria.Pass;
        }

        else
        {
            return Test_Criteria.Fail;  
        }

我无法访问的代码继续进行下面的下一个测试

driver.FindElement(By.Id("Pagecontent_TextBoxPostCode")).SendKeys("#####");

允许程序在返回后继续执行代码的最明智的方法是什么。感谢

3 个答案:

答案 0 :(得分:3)

您将同时返回ifelse子句,这就是为什么您的代码无法在if语句后到达下一行的原因。如果有任何条件,如果检查失败,您的代码将从该方法返回。这就是您收到错误/警告的原因。

答案 1 :(得分:1)

你的问题是你从这两个分支返回。如果要执行更多代码,则不应返回任何一个代码。

为了测试多个条件,您可以尝试这样的事情:(我假设失败的条件立即停止测试)

var result = Test_Criteria.Pass;
if ( */fail condition*/ )
{
    return Test_Criteria.Fail;  
}

if ( */another fail condition*/ )
{
    return Test_Criteria.Fail;  
}

if( */warning condition*/ )
{
    result = Test_Criteria.Warning;
}
else if( */another warning condition*/ )
{
    result = Test_Criteria.Warning;
}

return result;

答案 2 :(得分:0)

你有两个执行路径,每个都从你的函数返回,所以在你的if-else块之后确实不可能继续。

试试这个:

var urlContains = driver.Url.Contains("Postcode.aspx?type=billing&mode=guest"));
var result = urlContains ? Test_Critera.Pass : Test_Criteria.Fail;

driver.FindElement(By.Id("Pagecontent_TextBoxPostCode")).SendKeys("#####");
//the rest of your code

return result;