Selenium中driver.close()与driver.quit()的区别及进程清理方案

Dylan
Dylan
发布时间:2026-10-14 | 4人浏览过
原创

本文详解Selenium中driver.close()与driver.quit()的区别,指出close仅关闭当前标签页而quit关闭所有窗口并退出驱动。针对Windows下ChromeDriver进程残留问题,介绍了Java中通过ChromeDriverService管理进程以及Python中使用Service库或os模块强制结束进程的方法,确保测试环境整洁。

Selenium关闭浏览器的两种方法及进程残留问题

在Windows操作系统中运行Selenium脚本时,常遇到一个现象:程序执行完毕后,chromedriver.exe进程并未完全退出,仍驻留在内存中。

针对这一问题,参考了相关技术文章进行探讨:https://www.jb51.net/article/201622.htm

Selenium操控Chrome浏览器依赖于ChromeDriver驱动。在WebDriver接口中,提供两种关闭浏览器的方法:close()和quit()。


/**
* Close the current window, quitting the browser if it's the last window currently open.
*/
void close();
 
/**
* Quits this driver, closing every associated window.
*/
void quit();

查阅官方文档可知,close()方法用于关闭当前由driver实例操作的窗口。若当前仅有一个标签页,调用close()等同于关闭整个浏览器;而quit()方法则直接退出驱动实例,并关闭所有关联的标签页。因此,close()通常用于关闭单个标签页,而quit()才是彻底关闭浏览器的标准做法。以下通过示例验证这一结论:


package lessons;
 
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
 
public class FindElement_LinkText {
 
 public static void main(String[] args) throws Exception {
 
  System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
 
  WebDriver driver = new ChromeDriver();
  driver.manage().window().maximize();
 
  driver.get("https://www.baidu.com");
 
  driver.close();
  //driver.quit();
 }
 
}

通过切换注释最后两行代码,分别运行测试并观察效果。当使用close()时,由于仅有一个百度首页标签页,浏览器窗口会关闭,但通过任务管理器可见ChromeDriver进程依然存在于内存中。若使用quit(),整个浏览器及关联的ChromeDriver进程均会被正常终止。

Java中通过ChromeDriverService管理进程

ChromeDriver是一个轻量级服务。在单任务测试或无需频繁启动浏览器的场景下,使用driver.quit()即可正常结束ChromeDriver进程。然而,在大型测试套件中频繁启动和关闭浏览器,可能会引入明显的延迟,甚至导致浏览器进程无法及时关闭。为避免此类资源占用问题,可通过ChromeDriverService来控制ChromeDriver进程的生命周期,实现“用完即关”的效果(即在子进程中运行服务器)。具体实现如下:


ChromeDriverService service = new ChromeDriverService.Builder() .usingChromeDriverExecutable(new File("E:\\Selenium WebDriver\\chromedriver_win_23.0.1240.0\\chromedriver.exe")).usingAnyFreePort().build();
service.start();
driver = new ChromeDriver();
driver.get("http://www.baidu.com");
driver.quit();
// 关闭 ChromeDriver 接口
service.stop();

Python中控制ChromeDriver进程的方案

上述讨论基于Java语言实现。对于Python用户,可以通过使用service库来控制ChromeDriver的启动与关闭。


from selenium.webdriver.chrome.service import Service

在创建Service对象时,需指定chromedriver.exe的路径,并调用其命令行参数方法,否则可能报错。配置完成后即可启动服务。


c_service = Service('xxx')
c_service.command_line_args()
c_service.start()
driver = webdriver.Chrome()
driver.get(http://www.baidu.com)

关闭浏览器时,建议使用quit()而非close()。close()仅关闭当前页面,而quit()会退出驱动并关闭所有关联窗口,执行完毕后自动清理资源。


driver.quit()
c_service.stop()

若觉得配置Service过于繁琐,也可直接使用Python的os模块执行以下两条命令来强制结束相关进程:


os.system('taskkill /im chromedriver.exe /F')
os.system('taskkill /im chrome.exe /F')

至此,关于Selenium框架中driver.close()和driver.quit()关闭浏览器的内容介绍完毕。如需了解更多Selenium关闭浏览器相关内容,请搜索本站历史文章或继续浏览后续文章,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表