t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как убить IEDriverServer на ноде

Проблема похожая на http://code.google.c.../detail?id=4288
 
Есть грид с нодом под линуксом и хабом под вин7. Запускаю тест под ИЕ на ноде.
Тест состоит из 20 тестов в каждом из которых создается новый driver (driver = new EventFiringWebDriver(new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability));
_
 
а в конце теста убивается driver.quit();
 
Но если тест где-то зависает, он закрывается по timeout и после этого в процессах остается старый IEDriverServer.exe и запущеный им интернет икслорер.
такой сценарий повторяется и IEDriverServer.exe множатся. Обычно если их больше двух то тесты уже не выполняются.
 
Пытался в начале теста чистить процессы.
 
public static void clearIE(){
try {
Runtime.getRuntime().exec("cmd /K taskkill /F /IM IEDriverServer.exe");
 
} catch (IOException e1) {
// TODO Auto-generated catch block
 
}
try {
Runtime.getRuntime().exec("cmd /K taskkill /F /IM iexplore.exe");
} catch (IOException e) {
// TODO Auto-generated catch block
 
}
}
Но походу из-за того что тут приложение запущено под линксом а выполняется под виндовсом это не работает. 
 
Как еще можно убить процес из вебдрайвера(java) на удаленном ноде?
или как избежать размножения IEDriver ов? 
0
 

К сожалению, убиение процесса далеко не всегда помогает. Порой требуется помимо еще и хаб перезапускать. А если тесты крутятся на разных браузерах в параллельном режиме, то это - непозволительная роскошь. Тут разве что писать отдельную систему, которая будет контролировать весь этот процесс.

ну стандартного красивого способа нет, если quit не выполняет своей команды

тут надо будет делать обработчик для каждой операционной системы, которую вы используете

например, 

 

Runtime rt = Runtime.getRuntime();
  if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) 
     rt.exec("taskkill " +....);
   else
     rt.exec("kill -9 " +....);

http://stackoverflow.com/questions/6356340/killing-a-process-using-java