我目前正在测试网络应用的下拉列表的功能。我是测试的新手,所以我不太确定如何避免出现此错误。在做了一些研究之后,我知道我必须包含一个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)
{
}
}
答案 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。