Как убить исполняемый процесс IEDriver, работающий в фоновом режиме (Selenium webdriver)?

Я использую selenium webdriver (для Internet Explorer). Что он делает, он в основном открывает веб-страницу в Internet Explorer и отправляет форму.

Как я могу автоматически убить Internetexplorer.exe, работающий в фоновом режиме?


person user1254261    schedule 26.03.2014    source источник


Ответы (3)


Вы можете добавить следующий код в конец тестового сценария, чтобы закрыть драйвер IE. Поэтому нет необходимости закрывать его вручную.

try {
    Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe");
} catch (IOException e) {
    e.printStackTrace();
}

В противном случае откройте блокнот и вставьте следующий код.

taskkill /F /IM IEDriverServer.exe

Сохраните файл как closedriver.bat.

Нажмите на этот пакетный файл, когда вы хотите закрыть драйвер IE.

person Sighil    schedule 26.03.2014
comment
Привет, попробовал приведенный выше код. Но это не работает для меня. Я пробовал с вашим разделом проб, но он мне не помогает. Можете ли вы предоставить мне какой-либо другой подход к уровню кодирования? Спасибо - person Hardik Vora; 28.06.2016
comment
Посмотрите имя процесса драйвера в диспетчере задач. возможно название другое - person Sighil; 28.06.2016
comment
Ввод taskkill /F /IM IEDriverServer.exe в CMD работал как шарм. Спасибо! - person DocAsh59; 25.05.2017

Закрыть браузер:

try{
WebDriver driver = new InternetExplorerDriver();
.. write all the webdriver code here like driver.get, driver.findElement().click() etc. etc.
}
catch(Throwable webDriverException){
  if(webDriverException.getMessage().contains("org.openqa.selenium.WebDriverException: Error communicating with the remote browser. It may have died"){
      // Kill IEDriverServer.exe process
      // Using WebDriver WindowUtils utility 
      WindowsUtils.killByName("IEDriverServer.exe");

      // Or using JavaRunTime
     Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe")
  }

}

Посмотрите, поможет ли это!!!

person Sitam Jana    schedule 26.03.2014
comment
я хочу, чтобы ваш код выполнялся всякий раз, когда пользователь закрывает браузер. есть ли какое-либо событие закрытия браузера (X) в веб-драйвере. - person user1254261; 26.03.2014
comment
Да, в webdriver доступен метод close(), который закрывает текущее окно браузера. Чтобы закрыть все окна браузера, открытые webdriver, используйте метод quit(). Используйте приведенный выше код после написания метода close()/quit(). Немного отредактировал свой предыдущий ответ. - person Sitam Jana; 26.03.2014
comment
если я использую метод close() или quit(), он автоматически закрывает окно. Но я хочу, чтобы пользователь сам закрыл браузер, нажав кнопку закрытия браузера (X). - person user1254261; 26.03.2014
comment
так что я хочу, если (браузер закрывается пользователем, нажав кнопку крест (X)), а затем убить процесс iedriverserver.exe из диспетчера задач - person user1254261; 26.03.2014
comment
Итак, вы хотите определить, когда пользователь вручную закрывает браузер? и закройте IEDriverServer.exe из диспетчера задач. Это правильно? - person Sitam Jana; 26.03.2014
comment
Ага. это то, чего я пытаюсь достичь. Пожалуйста помоги - person user1254261; 26.03.2014
comment
Отредактировал свой предыдущий ответ. Пожалуйста, посмотрите! - person Sitam Jana; 26.03.2014
comment
это не сработало. Все еще iexplorerdriver exe работает в фоновом процессе - person user1254261; 26.03.2014
comment
У вас есть копия сообщений об исключениях, которые вы получаете, когда браузер закрывается вручную, НО код селена все еще работает? - person Sitam Jana; 26.03.2014
comment
Не думайте, что мы на одной волне!!! Вы закрываете браузер вручную между выполнением скрипта? Если да, он обязательно выдаст исключение. Или, если вы закрываете браузер вручную после завершения выполнения всех сценариев, вы можете написать логику процесса уничтожения в части удаления! Это понятно? - person Sitam Jana; 26.03.2014
comment
извините я не понял. Убить логику процесса в демонтажной части, когда добавить эту логику/где эта часть. пожалуйста скажи - person user1254261; 26.03.2014
comment
Пожалуйста, уточните, закрываете ли вы браузер вручную между выполнением скрипта или после его завершения? Чтобы получить представление о логике разрыва, см. это: 202.201.18.40:8080/members/1000007/JUnit/ - person Sitam Jana; 26.03.2014
comment
я закрываю браузер после завершения выполнения скрипта - person user1254261; 26.03.2014
comment
Откройте командную строку и выполните команду taskkill /F /IM IEDriverServer.exe. Это закроет процесс IEDriverServer.exe из диспетчера задач. - person Sitam Jana; 26.03.2014

Если вы используете тест MS, в [TestCleanup] или [ClassCleanup] добавьте следующее:

foreach(var process in Process.GetProcess("IEDriverServer"))
{
  process.Kill();
}
person AL Lopez    schedule 11.06.2019