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 相关文章推荐
python sort、sorted高级排序技巧
Nov 21 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
Python实现的选择排序算法示例
Nov 29 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
Python通过cv2读取多个USB摄像头
Aug 28 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
Django项目如何正确配置日志(logging)
Apr 29 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维护文件系统
2006/10/09 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
Python中zip()函数用法实例教程
2014/07/31 Python
基于python编写的微博应用
2014/10/17 Python
python常用知识梳理(必看篇)
2017/03/23 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
Python中过滤字符串列表的方法
2020/12/22 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
自考生自我评价分享
2014/01/18 职场文书
计算机学生求职信范文
2014/01/30 职场文书
小学生手册家长评语
2014/04/16 职场文书
植树节活动总结
2014/04/30 职场文书
九华山导游词
2015/02/03 职场文书
驳回起诉裁定书
2015/05/19 职场文书
教研活动主持词
2015/07/03 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL