У меня есть приложение, которое использует расширение Selenium Browser для Chrome.
Поскольку это расширение не закрывает браузер Chrome при выходе из процесса, я добавил в свое приложение следующий код:
static void OnProcessExit(object sender, EventArgs e)
{
API.Quit();
}
class API
{
public static IWebDriver browser = new ChromeDriver(Service(), Options());
public static void Quit()
{
if (!String.IsNullOrEmpty(browser.CurrentWindowHandle))
{
browser.Quit();
browser.Dispose();
}
}
}
Обратите внимание, что оба значения, OnProcessExit
и Quit
, находятся в двух отдельных классах, файлах и пространствах имен. Я собрал их здесь для облегчения просмотра кода.
Кажется, есть ошибка, которая открывает Chrome, когда драйвер еще не открыт. Вот почему я реализовал случай if.
Теперь прибывает странная вещь:
Даже когда я раскомментирую все внутри Quit()
, откроется браузер:
static void OnProcessExit(object sender, EventArgs e)
{
API.Quit();
}
class API
{
public static IWebDriver browser = new ChromeDriver(Service(), Options());
public static void Quit()
{
/*
if (!String.IsNullOrEmpty(browser.CurrentWindowHandle))
{
browser.Quit();
browser.Dispose();
}
*/
}
}
Принимая во внимание, что когда я раскомментирую вызов, браузер не открывается:
static void OnProcessExit(object sender, EventArgs e)
{
//API.Quit();
}
class API
{
public static IWebDriver browser = new ChromeDriver(Service(), Options());
public static void Quit()
{
if (!String.IsNullOrEmpty(browser.CurrentWindowHandle))
{
browser.Quit();
browser.Dispose();
}
}
}
Мой вопрос: почему мое приложение ведет себя по-разному, когда я раскомментирую вызов или все в Quit()
?