Selenium : How to stop geckodriver process impacting PC memory, without calling driver.quit()?
Selenium : как остановить процесс geckodriver, влияющий на память ПК, без вызова driver.quit()?
Есть тест, что-то вроде:
import//needed imports
publicclassTestClass{ WebDriver driver;
@Before publicvoidsetUp() { //some code }
@Test publicvoidtest1() { //some code, including init of driver (geckodriver) }
//@After // public void tearDown() { // driver.quit(); //} }
Итак, я запустил geckodriver и успешно запустил свои тесты, используя экземпляры firefox. Но я не хочу закрывать окно firefox после каждого запуска, потому что я просто хочу проанализировать, что у меня есть, и исправить все необходимое после тестового запуска (я собираюсь раскомментировать driver.quit () позже). В то же время каждый вызов без закрытия драйвера приводит к перегрузке оперативной памяти на моем ПК (и не имеет значения - закрывал я браузер вручную или нет после тестирования):
Итак, вопрос: есть ли какой-либо способ закрыть процесс (точнее - сделать что-то, что закроет geckodriver.exe процесс в taskmgr) "geckodriver", но НЕ закроет браузер после завершения теста? например, добавление какого-либо метода в сам тест, что угодно... Это не влияет на мою работу / сам тест, я просто хочу добавить некоторую оптимизацию.
Переведено автоматически
Ответ 1
Согласно вашему вопросу, комментирование driver.quit() just Not to close firefox window after each run, because I just want to analyse what I have не будет частью рекомендаций.
Для любого подробного анализа мы можем создавать записи в журнале и делать моментальные снимки.
При автоматизации через Selenium в соответствии с рекомендациями вы должны вызвать quit() метод внутри tearDown() {}. Вызываем quit()DELETEs текущий сеанс просмотра посредством отправки команды "quit" с {"flags": ["eForceQuit"]} и, наконец, отправляем запрос GET при / завершении работыEndPoint. Вот пример ниже :
Таким образом, при вызове quit() метода Web Browser сеанс и WebDriver экземпляр полностью завершаются. Следовательно, вам не нужно включать какие-либо дополнительные шаги, которые будут накладными расходами.
Решение
Тем не менее, если вы хотите выполнить уничтожение зависших WebDriver экземпляров, например, GeckoDriver.exe экземпляров, вы можете использовать любой из следующих блоков кода, чтобы уничтожить любой из зависших WebDriver экземпляров :
PROCNAME = "geckodriver" # or chromedriver or IEDriverServer forprocin psutil.process_iter(): # check whether the process name matches ifproc.name() == PROCNAME: proc.kill()