Кнопка остановки события WPF, Selenium
Как остановить событие кнопки, когда сработало исключение...? Я использовал блоки try try, если сработало исключение, оно попытается выполнить следующий код, я не хочу этого... Просьба проверять комментарии в коде.. Я неправильно использую блоки try try..?
вот мой код:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
try
{
driver.FindElement(By.CssSelector(".username")).SendKeys("abc");
driver.FindElement(By.CssSelector(".password")).SendKeys("abcpassword");
driver.FindElement(By.XPath("//a[2]/img")).Click();
}
catch(Exception ex)
{
driver.Quit();
MessegeBox.Show("Log in failed");
//stop button event here only if exception fired
}
try
{
new SelectElement(driver.FindElement(By.Id("CId"))).SelectByText("CVB");
driver.FindElement(By.Name("ddd")).Click();
}
catch(Exception ex)
{
driver.Quit();
MessegeBox.Show("Log in failed");
//stop button event here only if exception fired
}
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
xlApp.DisplayAlerts = false;
object misValue = System.Reflection.Missing.Value;
}
2 ответа
catch
только нарушает выполнение кода внутри try
блок. Это не возвращается из метода. Типичный сценарий действительно только один try/catch
блок в методе (так что catch
будет также последним в вашем методе -> метод завершится):
public void SomeMethod()
{
try
{
...
}
catch(...)
{
...
}
... // code will continue to run here, if no code left method will ends
}
В вашем случае вы должны выйти из метода, чтобы избежать других try/catch
бежать, значит использовать return
ключевое слово как это:
public void SomeMethod()
{
try
{
...
}
catch(...)
{
...
return;
}
... // this code will not run in case of exception in try block
}
Я хотел бы предложить вам реструктурировать свой код, как показано ниже. Еще лучше обрабатывать конкретные исключения, а не обрабатывать общее исключение.
private void Button_Click_1(object sender, RoutedEventArgs e)
{
try
{
driver.FindElement(By.CssSelector(".username")).SendKeys("abc");
driver.FindElement(By.CssSelector(".password")).SendKeys("abcpassword");
driver.FindElement(By.XPath("//a[2]/img")).Click();
new SelectElement(driver.FindElement(By.Id("CId"))).SelectByText("CVB");
driver.FindElement(By.Name("ddd")).Click();
}
catch (Exception ex)
{
driver.Quit();
MessegeBox.Show("Log in failed");
return;
}
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
xlApp.DisplayAlerts = false;
object misValue = System.Reflection.Missing.Value;
}