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 实现字符串中指定位置插入一个字符
May 02 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
Python基础之文件读取的讲解
Feb 16 Python
python正则表达式匹配IP代码实例
Dec 28 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Python如何将函数值赋给变量
Apr 28 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 Python
python制作抽奖程序代码详解
Jan 15 Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 Python
Python中json.dumps()函数的使用解析
May 17 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
基于mysql的论坛(3)
2006/10/09 PHP
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
自制PHP框架之设计模式
2017/05/07 PHP
FCK调用方法..
2006/12/21 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
Python中subprocess模块用法实例详解
2015/05/20 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
pyqt5实现登录界面的模板
2020/05/30 Python
python 读取数据库并绘图的实例
2019/12/03 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
python实现二分查找算法
2020/09/18 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
24岁生日感言
2014/01/13 职场文书
公司门卫管理制度
2014/02/01 职场文书
学习决心书范文
2014/03/11 职场文书
财务担保书范文
2014/04/02 职场文书
大气污染防治方案
2014/05/19 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
办公室主任岗位职责
2015/01/31 职场文书
张丽莉观后感
2015/06/16 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技