C#中的嵌套if语句

时间:2011-06-07 21:50:39

标签: c# selenium nested-loops

我需要编写一个条件语句来检查L tab是否存在。

  • 如果L标签不存在,则会打印“L不存在”。
  • 如果存在L,则会打印“L存在”,并检查是否存在S,C和K标签:
    • 如果存在S,则会打印“S存在”,否则“S不存在。
    • 如果存在C,则会打印“C存在”,否则“C不存在”,
    • ......和K一样。

我编写了以下代码,但由于某种原因,代码对我来说并不好看。任何想法都将受到高度赞赏。谢谢!

if (Sel.IsElementPresent(arrObj1[4]))
{
    Lib.WriteDebugLogs("Test 1: General", "NORMAL", "L tab present in home page");
    Sel.Click(arrObj1[4]);
    if (Sel.IsElementPresent(arrObj1[5]))
    {
        Lib.WriteDebugLogs("Test 1: General", "NORMAL", "S tab present under L tab.");
    }

    if (Sel.IsElementPresent(arrObj1[6]))
    {
        Lib.WriteDebugLogs("Test 1: General", "NORMAL", "C tab present under L tab.");
    }

    if (Sel.IsElementPresent(arrObj1[7]))
    {
        Lib.WriteDebugLogs("Test 1: General", "NORMAL", "K tab present under L tab.");
    }


}
else
{
    s = "'L' tab is not displayed in the home page.";
    arrTestResults[6] = arrTestResults[7] = s;
    Lib.WriteDebugLogs("Test 1: General", "****ERROR****", "Could noT find the L tab");
}

1 个答案:

答案 0 :(得分:3)

你几乎不应该通过“魔术常数”来引用数组中的值,你恰好知道它们是指特定的元素。所以我会假设在调用此方法之前的某个地方,有人做过这样的事情:

var tabs = new[] {
    new Tab{Name = "L", ParentName= "home page", Identifier = arrObj1[4],
    // and so on for the tabs you care about.
    };

这样,您的方法的第一部分可以替换为仅显示有关显示哪些选项卡的信息的方法:

public void LogDisplayedTabs(IEnumerable<Tab> tabs) 
{
    for(var tab in tabs) 
    {
        if (Sel.IsElementPresent(tab.Identifier))
        {
            Lib.WriteDebugLogs("Test 1: General", "NORMAL", 
                string.Format("{0} tab present under {1} tab.", tab.Name, tab.ParentName));
        }
    }
}

我现在没时间处理方法的其余部分,但是这种模式应该可以帮助你弄清楚如何修复其余方法。