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实现从web抓取文档的方法
Sep 26 Python
Python Tkinter GUI编程入门介绍
Mar 10 Python
python写入中英文字符串到文件的方法
May 06 Python
python使用pil生成图片验证码的方法
May 08 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
深入探究Django中的Session与Cookie
Jul 30 Python
Python实现的计算器功能示例
Apr 26 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
python输出决策树图形的例子
Aug 09 Python
Python中pass的作用与使用教程
Nov 13 Python
Django使用echarts进行可视化展示的实践
Jun 10 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快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
python在控制台输出进度条的方法
2015/06/20 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
flask入门之表单的实现
2018/07/18 Python
python命令 -u参数用法解析
2019/10/24 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
python可迭代对象去重实例
2020/05/15 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
十佳青年事迹材料
2014/08/21 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
会议开幕词
2015/01/28 职场文书
运动会通讯稿100字
2015/07/20 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书