Перейти к содержимому

Selenium WebDriver: полное руководство
онлайн, начало 19 октября
Логи как инструмент тестировщика
онлайн, начало 22 октября
Школа для начинающих тестировщиков
онлайн, начало 122 октября
Тестирование REST API
онлайн, начало 22 октября
Фотография

Как получить PID процесса запущенного chromedriver?

PID Java Selenium chromedriver

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 the0

the0

    Новый участник

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Сергей


Отправлено 07 Ноябрь 2016 - 17:27

Добрый день!

Столкнулся с такой проблемой, что на CentOS во время прогона, хром закрывается некорректно, о чем свидетельствует сообщение в правом верхнем углу браузера при следующем его запуске для следующего теста. В какой-то момент, после очередного теста, браузер закрывается, а вот процесс остается и по этой причине прогон зависает надолго (около 3 часов), после длинной паузы появляется ошибка:
 

Nov 02, 2016 9:28:03 PM org.openqa.selenium.os.UnixProcess destroy
INFO: Command failed to close cleanly. Destroying forcefully (v2). [/usr/local/share/chromedriver, --port=9961][ {}]
Nov 02, 2016 9:28:04 PM org.openqa.selenium.os.UnixProcess destroy
SEVERE: Unable to kill process with PID 16197
 

Выяснилось это опытным путем, поскольку после того, как процесс убивается вручную, тесты продолжают запускаться дальше, пока вновь не произойдет такая штука. Тесты завершаются командой webDriver.quit(); Все тулзы, входящие в инфраструктуру тестов были обновлены до самых актуальных версий, проблема сохранилась.

Появилась идея вставить костыль, такой как ручной kill процесса, в случае, если после webDriver.quit(); он все еще запущен, однако в этом случае нужно получить PID процесса.
Собственно вопрос, как получить PID процесса только что запущенного chromedriver'а?

Может кто сталкивался с такой задачей, буду очень признателен за помощь.
 


  • 0

Основательный подход


#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 742 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 07 Ноябрь 2016 - 17:48

У меня на Windows была такая же проблема. Если не изменяет память, то с PID у меня не вышло и я просто стал "убивать" браузер плюс сам процесс автотестов (екзешник).


  • 0

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#3 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 316 сообщений
  • Город:Н.Новгород

Отправлено 10 Ноябрь 2016 - 20:47

  1. Буду предполагать, что надо убить единственный хром. Или же все, оставшиеся на машине. Как убить конкретный chromedriver, если запущено несколько - не знаю. Они все запускаются от одного процесса java, и какой запущен в данном потоке - трудно сказать. (Хотя, теоретически, можно при запуске отловить, какой порт он слушает, и потом пропарсить вывод "ps -P <pid>". Но это уже ухищрения, которые, м.б., в данном случае и не нужны.)
  2. Я так и не понял: убивать надо chrome или chromedriver. Что важно: убиваю chromedriver - процессы chrome останутся висеть, только перепривязываются к оболочке. Поэтому надо начинать с них. А драйвер, может быть, и сам закроется.
  3. Понятно, что самое простое решение - глобальная зачистка: 
    Runtime.getRuntime.exec("killall chrome");
  4. Если нужно чуть поювелирнее, например, чтоб не прибить свой рабочий браузер, можно выцепить только те процессы, которые запущены из-под chromedriver. Только делать это надо до driver.quit(), а то потом они будут обычными системными процессами, и уже точно не определишь, какой откуда взялся.

    Runtime.getRuntime().exec("for drv in $(pgrep chromedriver);do for p in $(pgrep -P $drv);do kill -KILL $p;done;done");

  • 0


Программирование на С# для тестировщиков
онлайн, начало 28 сентября
Автоматизатор мобильных приложений
онлайн, начало 3 октября
Selenium WebDriver: полное руководство
онлайн, начало 19 октября
Программирование на Python для тестировщиков
онлайн, начало 26 октября




Темы с аналогичным тегами PID, Java, Selenium, chromedriver

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале