2013-03-13 43 views
0

嗨我有一个emun,它将运行测试,如果语句。枚举返回后无法访问的代码

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("#####"); 

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

+0

你需要表现出更多的代码的掌握你在做什么......发表上述 – Stokedout 2013-03-13 09:57:16

回答

3

您正在返回ifelse子句,这就是为什么您的代码不会到达if语句后的下一行。如果出现任何情况,如果检查失败,您的代码将从方法中返回。这就是为什么你得到错误/警告。

+0

完整的代码你是正确的,除去我的回答 – TalentTuner 2013-03-13 10:11:59

+0

@Saurabh,你的答案是很好,只要删除最后一部分,您应该取消删除您的答案,因为它提供了一种方法来解决问题的OP – Habib 2013-03-13 10:28:07

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; 
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;