kerrigan
(kerrigan)
08.Апрель.2013 05:20:34
#1
Такая проблема:
Если тест падает сам либо проходит полностью то хромдрайвер убивается нормально и в процессах не висит.
Если же руками стопаю тест - то хромдрайвер висит в процессах и его приходится убивать вручную
Это конечно не критикал проблема - но возникла такая ситуация что на билд агентах при запуске remote run'ом скопились очень много висящих процессов.
Как это можно обойти и сталкивался ли с этим кто-нибудь?
Спасибо!
polusok
(Mykhailo Poliarush)
08.Апрель.2013 06:56:08
#2
ну понятно что он будет висеть, так как вы убили процесс, который отвечает за его открыие и закрытие
ну тут надо думать, я бы сделал внешнюю программу, которая убивает chrome процессы
или же стартовал chromedriverserver до выполенния тестов и закрывал после выполнения, а само выполнение запускал бы как отдельный процесс
а как вы запускаете chromedriver server на CI?
1 лайк
rpwheeler
(rpwheeler)
08.Апрель.2013 17:56:18
#3
Сталкивался. Я так понимаю, что речь идет о Windows. Что скажу: проводил эксперименты (Windows 7 / 64), и, насколько я помню, то убить ненужные процессы (и даже по маске) получалось с помощью бесплатного командного процессора NirCmd от NirSoft . Из альтернатив ему припоминаю тоже бесплатный Comandiux. Гарантий не даю (я остановился на экспериментах), но можете попробовать.
vmaximv
(vmaximv)
09.Апрель.2013 05:46:08
#4
а чем "родные" taskkill/pstools не устраивали?
qaleader
(qaleader)
09.Апрель.2013 07:53:48
#5
На каком языке вы автоматизируете? В C# можно убить процесс сразу из теста без использования каких-то вспомогательных и не нужных действий.
rpwheeler
(rpwheeler)
09.Апрель.2013 10:26:17
#6
Так оно в жизни получилось, что NirCmd дошел до меня раньше, чем информация о taskkill , "ну и вот так и живем".
taralezh
(Андрей Труш)
19.Ноябрь.2013 08:55:48
#7
А можно более конкретно, как это сделать!
polusok
(Mykhailo Poliarush)
19.Ноябрь.2013 17:16:34
#8
Я скажу за python, тут или можно использовать os модуль
import os
os.system("taskkill /im chromedriver.exe")
или сторонний, например psutil Google Code Archive - Long-term storage for Google Code Project Hosting.
import psutil
PROCNAME = "chromedriver.exe"
for proc in psutil.process_iter():
if proc.name == PROCNAME:
proc.kill()
1 лайк
klysak07
(Александр)
20.Ноябрь.2013 10:14:15
#9
А если срабатывает Exception, разве не срабатывает после него tearDown() в котором можно сделать например driver.quit()?
polusok
(Mykhailo Poliarush)
20.Ноябрь.2013 10:20:24
#10
Ну тут смотря как завершается процесс прогона тестов. Просто если java процесс убивают напрямую руками, то никакие методы не вызовутся.
@kerrigan Конечно я бы уточнил, как именно руками стопается тест? Я так понимаю, вы просто не дожидаетесь завершения выполнения тестов на CI останавливаете прогон тестов. Верно?
напишите, пожалуйста, где можно почитать более детально или может у вас есть пример решения этого вопроса на с#
madvlaydin
(Vladislav Abramov)
26.Апрель.2020 04:28:21
#12
в гугле есть ответ на всё, это раз
Всем привет!
Хочу вам рассказать, как мне удалось решить проблему запуска автотестов в следующем сценарии:
у меня есть набор тестовых AD-учетных записей;
этим учетным записям сопоставлены пользователи в тестируемой системе 1-к-1;
при входе в систему проверяется токен, который браузер получает от винды, и по которому система аутентифицирует пользователя;
в соответствии с учетной записью AD мы авторизуемся в системе с нужными правами.
В чем проблема?
Запуск браузера руками от имени другого пользователя осуществляется легко:
с зажатой клавишей Shift правой кнопкой мыши жмем по ярлыку, например, хрома, там запуск от имени другого пользователя, домен-логин-пароль, всё, браузер зап…
вот здесь в конце есть ответ, как искать процессы и уничтожать их