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的Flask框架中的signals信号机制
Jun 13 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
Python延时操作实现方法示例
Aug 14 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
python如何将两张图片生成为全景图片
Mar 05 Python
Python reversed函数及使用方法解析
Mar 17 Python
Python如何省略括号方法详解
Mar 21 Python
Python分类测试代码实例汇总
Jul 23 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 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/11/11 PHP
php的4种常用运行方式详解
2016/12/22 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
Nuxt配合Node在实际生产中的应用详解
2018/08/07 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中的lstrip()方法使用简介
2015/05/19 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
Python socket聊天脚本代码实例
2020/01/02 Python
python re的findall和finditer的区别详解
2020/11/15 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
大学生蛋糕店创业计划书
2014/01/13 职场文书
应用化学专业职业生涯规划书
2014/01/22 职场文书
客服部工作职责范本
2014/02/14 职场文书
国旗下演讲稿
2014/05/08 职场文书
文员求职信
2014/07/15 职场文书
先进个人评语大全
2015/01/04 职场文书
碧霞祠导游词
2015/02/09 职场文书
2015中学教学工作总结
2015/07/22 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技