'DropDownList'有一个SelectedValue,它是无效的,因为它在项目列表中不存在

时间:2014-08-11 14:29:51

标签: c# asp.net testing nunit

我目前正在测试网络应用的下拉列表的功能。我是测试的新手,所以我不太确定如何避免出现此错误。在做了一些研究之后,我知道我必须包含一个try catch块来处理异常。到目前为止,当我运行测试时,我能够在下拉列表中测试第一个选项。最后,我试图在下拉列表中测试每个选项,考虑到每个选项将用户引导到不同的页面。这是我的代码:

public void GoToProductSelection(string choice)
{
    this.GoToFacilitySelection();
    IWebElement productsDdl = new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementExists(By.Id("ctl00_ContentPlaceHolder1_ddlProducts")));
    SelectElement options = new SelectElement(productsDdl);
    options.SelectByText(choice);
    IWebElement product = options.SelectedOption;
    IWebElement contBtn;
    IWebElement selCheckBox; 

    string val = (product.GetAttribute("value"));

    IWebElement addToOrderBtn = driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_btnAddItem"));
    addToOrderBtn.Click();

    try
    {

    }
    catch (NoAlertPresentException)
    {

    }
}

1 个答案:

答案 0 :(得分:0)

我不确定你的问题是关于try / catch,一般测试还是抛出的实际错误(选择值无效)。

您的try / catch应按如下方式构建。

public void GoToProductSelection(string choice)
{
    try
    {
        this.GoToFacilitySelection();
        IWebElement productsDdl = new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementExists(By.Id("ctl00_ContentPlaceHolder1_ddlProducts")));
        SelectElement options = new SelectElement(productsDdl);
        options.SelectByText(choice);
        IWebElement product = options.SelectedOption;
        IWebElement contBtn;
        IWebElement selCheckBox; 

        string val = (product.GetAttribute("value"));

        IWebElement addToOrderBtn = driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_btnAddItem"));
        addToOrderBtn.Click();
    }
    catch (NoAlertPresentException)
    {
        //code to handle NoAlertPresentException
    }
}

当在try块中抛出异常时,CLR会查找处理此异常的catch语句。如果try块中没有任何内容,则块中不会抛出任何异常,并且永远不会触发catch。