selenium框架中driver.close()和driver.quit()关闭浏览器


Posted in Python onDecember 08, 2020

Windows系统上,每次运行完selenium程序后,chromedriver.exe进程总是不能彻底关闭。

selenium框架中driver.close()和driver.quit()关闭浏览器

网上参考了如下文章:https://3water.com/article/201622.htm

selenium操作chrome浏览器需要有ChromeDriver驱动来协助。webdriver中关浏览器关闭有两个方法,一个叫quit,一个叫close。

/**
* 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实例操作的页面,叫当前。如果当前窗口只有一个tab,那么这个close方法就相当于关闭了浏览器。quit方法就是直接退出并关闭所有关联的tab窗口。所以,close方法一般关闭一个tab,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方法的时候,因为只有百度首页这个tab,所以会关闭浏览器,但是通过查看任务管理器发现,ChromeDriver进程仍存在内存中。如果使用quit方法,整个浏览器都直接关闭,ChromeDriver进程也会被结束。

ChromeDriver是轻量级的服务,在单任务或不需要频繁启动浏览器的情况下,使用driver.quit()关闭浏览器,可以正常结束ChromeDriver进程。若在一个比较大的 测试套件中频繁的启动关闭,会增加一个比较明显的延时导致浏览器进程不被关闭的情况发生,为了避免这一状况我们可以通过ChromeDriverService来控制ChromeDriver进程的生死,达到用完就关闭的效果避免进程占用情况出现(Running the  server in a child process)。具体实现如下:

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();

以上讨论的均是java版的实现,对于python来说是使用service库来实现控制chromedriver的开启和关闭。

from selenium.webdriver.chrome.service import Service

创建的时候需要把chromedriver.exe的位置写在Service的XXX部分,需要调用他的命令行方法,不然报错,然后启动就可以了。

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()

嫌麻烦也可以直接使用python的os模块执行下面两句话结束进程

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

到此这篇关于selenium框架中driver.close()和driver.quit()关闭浏览器的文章就介绍到这了,更多相关selenium 关闭浏览器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python3使用tkinter实现ui界面简单实例
Jan 10 Python
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
python获取目录下所有文件的方法
Jun 01 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
python批量制作雷达图的实现方法
Jul 26 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
python实现彩色图转换成灰度图
Jan 15 Python
Python中整数的缓存机制讲解
Feb 16 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
Python hashlib和hmac模块使用方法解析
Dec 08 #Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 #Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 #Python
python 实现数据库中数据添加、查询与更新的示例代码
Dec 07 #Python
python 爬取小说并下载的示例
Dec 07 #Python
Python常用GUI框架原理解析汇总
Dec 07 #Python
pycharm中leetcode插件使用图文详解
Dec 07 #Python
You might like
PHP串行化与反串行化实例分析
2016/12/27 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
PHP7新特性
2021/03/09 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
Python迭代用法实例教程
2014/09/08 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
任意存:BOXFUL
2018/05/21 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
试用期员工考核制度
2014/01/22 职场文书
生物制药专业求职信
2014/03/11 职场文书
银行贷款承诺书
2014/03/29 职场文书
老公保证书范文
2014/04/29 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript