Selenium Webdriver - Убить процессы chrome и chromedriver при остановки(abort) джобы на Jenkins через постбилдстеп

Проблема (Вопрос) заключается в том что при остановке джобы на Jenkins остаются зависшие процессы chrome и chromedriver. Как их удалить?

Я попытался использовать постбилд степ.

У меня получилось удалить процесс chromedrive используя wmic.

У меня не получилось удалить процесс chrome.

Проект на С#.
Запускается на Windows.

taskkill /f /fi "imagename eq chromedriver*" /fi "username eq %USERNAME%"
taskkill /f /fi "imagename eq chrome*" /fi "username eq %USERNAME%"

сорри, неточно сформулировал, мне надо это сделать в момент остановки джобы и именно для этой джобы.

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

Рестарт ноды)

ну процесс хромдрайвера у меня получается убить через вызов wmic в постбилд степе…проблема что связанные процессы хрома остаются висеть…

Да в винде отстой, т.к. там нет возможности убивать порожденные процессы, ибо механизм не как форк в униксах.

Нашел опцию для хромдрайвера
detach
If false, Chrome will be quit when ChromeDriver is killed, regardless of whether the session is quit. If true, Chrome will only be quit if the session is quit (or closed). Note, if true, and the session is not quit, ChromeDriver cannot clean up the temporary user data directory that the running Chrome instance is using.

вот так заюзал
var options = new ChromeOptions();
options.AddArgument(“detach=false”);
driver = new ChromeDriver(baseDirectory, options, webdriverCommandTimeout);

но эффект нулевой

2 лайка

проблема возникала на старых версиях хрома и вебдрайвера + вин 7. попробуйте обновить версии либ и браузеров

да, спасибо! обновление хрома + драйвера помогло.

для тех кому не помогает, можно использовать такой обходной вариант:
делаем постбилд степ, в нем вызываем батник, в батнике такой код:

SET Workspace=%cd%…
IF NOT “%1”=="" SET Workspace=%1

set Workspace=%Workspace:…=%
set Workspace=%Workspace:=\%

for /F “skip=2 tokens=2 delims=,” %%a in (‘wmic process where "ExecutablePath=’%Workspace%\…\chromedriver.exe’" get ProcessID,Status /format:csv’) do taskkill /pid %%a /f /t


В батник в качестве параметра прокидываем %WORKSPACE%

1 лайк

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

Оно то классно. Может там все на время завязано.
Скорость запуска браузера != скорость запуска докер контейнера с браузером