我设置了一段python代码来运行Selenium chromedriver.exe。在运行结束时,我让browser.close()关闭实例。(browser = webdriver.Chrome())我认为它应该从内存中释放chromedriver.exe (我使用的是Windows7)。但是,每次运行后,内存中都会保留一个chromedriver.exe实例。我希望有一种方法可以用python编写一些东西来终止chromedriver.exe进程。显然,browser.close()不能完成这项工作。谢谢。
发布于 2014-01-24 06:48:04
对于Selenium API,您确实应该调用browser.quit(),因为此方法将关闭所有窗口并终止进程。您仍然应该使用browser.quit()。
然而,在我的工作场所,我们注意到在Java平台中执行chromedriver测试时出现了一个巨大的问题,即使在使用了browser.quit()之后,chromedriver.exe实际上仍然存在。为了应对这个问题,我们创建了一个类似下面的批处理文件,它只是强制关闭了进程。
kill_chromedriver.bat
@echo off
rem just kills stray local chromedriver.exe instances.
rem useful if you are trying to clean your project, and your ide is complaining.
taskkill /im chromedriver.exe /f由于chromedriver.exe不是一个巨大的程序,也不会消耗太多内存,所以您不应该每次都运行它,而是只在它出现问题时运行。例如,在Eclipse中运行Project->Clean时。
发布于 2014-01-24 06:47:59
browser.close()将只关闭当前的chrome窗口。
browser.quit()应该关闭所有打开的窗口,然后退出webdriver。
发布于 2016-02-29 13:05:28
从理论上讲,调用browser.Quit将关闭所有浏览器选项卡并终止该进程。
然而,在我的例子中,我无法做到这一点-因为我并行运行了多个测试,我不想用一个测试来关闭对其他测试的窗口。因此,当我的测试运行完后,仍然有许多"chromedriver.exe“进程在运行。
为了克服这个问题,我编写了一个简单的清理代码(C#):
Process[] chromeDriverProcesses = Process.GetProcessesByName("chromedriver");
foreach(var chromeDriverProcess in chromeDriverProcesses)
{
chromeDriverProcess.Kill();
}https://stackoverflow.com/questions/21320837
复制相似问题