Как убить процесс на удалённой машине? (Selenium Grid)

Тесты проходят только на IE (как известно он довольно капризный).

Бывают случаи если тест падает то driver.quit(); не всегда отрабатывает (допустим какой либо модальный диалог не даёт закрыть окно) и браузер не закрывается, потом эти открытые окна накапливаются. Иногда и драйвер остаётса в процессах.

Чтобы решить проблему использовал скрипт в @AfterClass
Runtime.getRuntime().exec(“taskkill /F /IM IEDriverServer.exe”);
Runtime.getRuntime().exec(“taskkill /F /IM iexplore.exe”);

Теперь перехожу на Selenium grid и проблема следущая:

Скрипт
Runtime.getRuntime().exec(“taskkill /F /IM IEDriverServer.exe”); выполняется на Хост машине а не на Ноде (remote).

Как запустить этот скрипт на удаленной машине в конце теста (именно на той в которой проходил тест). Может кто сталкивался с такой проблемой?

Посмотрите Selenium-Grid-Extras ссылку можно найти тут awesome-test-automation/java-test-automation.md at master · atinfo/awesome-test-automation · GitHub

2 лайка

Да, как раз как только прочитал - сразу вспомнил, что @ArtOfLife уже писал пост об этом.

Спасибо. Буду изучать.

Ребят, а есть ли какой нибуть простой способ “попросить” Нод убить процесс в конце теста, без установки всаких дополнительных extensions с кучей фич?

Натравить какой-нибудь powershell / psexec с рутовыми креденшалами на удаленную тачку, передав команду убиения процесса.

1 лайк

Написать службу (если речь о Windows) или просто программку, которая будет убивать нужный процесс, работая на стороне сервера . Команду на kill process может получать хоть из банального текстового файла (проверяет триггер в файле с необходимой периодичностью). Не очень красивый способ, но рабочий.

Решил следущим способом:

Получаю IP Нода

Выполнаю тасккилл на Ноде

Пока не знаю оставлю ли так. Посмотрю на стабильность работы и на сколько больше времени будет забирать:)