0

嗨,我有一个 emun,它将通过 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("#####");

让程序在返回后继续代码的最明智的方法是什么。谢谢

4

3 回答 3

3

if您在and子句中都返回else,这就是为什么您的代码不会在if语句之后到达下一行。在任何情况下,如果检查失败与否,您的代码将从该方法返回。这就是您收到错误/警告的原因。

于 2013-03-13T09:55:39.767 回答
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;
于 2013-03-13T10:03:48.567 回答
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;
于 2013-03-13T10:20:16.577 回答