2013-03-13 80 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;