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

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

chromedriver
jenkins
webdriver
Теги: #<Tag:0x00007f9c4824db50> #<Tag:0x00007f9c4824d9e8> #<Tag:0x00007f9c4824d8a8>

(Alex Levin) #1

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

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

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

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

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


(Vasiliy Rakshin) #2
taskkill /f /fi "imagename eq chromedriver*" /fi "username eq %USERNAME%"
taskkill /f /fi "imagename eq chrome*" /fi "username eq %USERNAME%"

(Alex Levin) #3

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


(Vasiliy Rakshin) #4

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


(Sergei) #5

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


(Alex Levin) #6

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


(Sergei) #7

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


(Alex Levin) #8

Нашел опцию для хромдрайвера
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);

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


(Ramon Menezes) #9

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


(Alex Levin) #10

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


(Alex Levin) #11

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

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%


(Funker) #12

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


(Nick) #13

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