在使用Selenium的过程中,偶然发现浏览器意外关闭导致意料之外的错误发生。比如重复启动浏览器。在无界面headless模式下,因为目前流行的浏览器是多进程的,这是很难发现的。在浑然不知的情况下,多次重复启动浏览器而没有正常关闭,很可能导致多个浏览器进程以“假死”的状态滞留内存。“僵尸”进程占用浪费系统资源,堵塞其他进程,降低系统的性能。因此,需要合理正确的判断且处理浏览器状态,并在必要时回收系统资源的方法。

由于Selenium中webdriver是直接管理浏览器行为的实体,所以可以通过webdriver管理浏览器行为的方法来简单有效地鉴别其状态。比如,webdriver的execute_script(javascript_string)方法。学习过Javascript的码友想必知道,最简单的Javascript代码之一:

javascript:void(0);

它所表达的意义跟空集没什么两样。但是,它的作用却是不容小觑。比如,最流行的是用在<a>标签的href属性,点击使用该方法的<a>标签不跳转和弹出新标签页。进而通过设置对应的Javascript脚本来响应点击事件。

<a href="javascript:void(0);" class="title">...</a>

执行该脚本代码没有实际清晰的意义,它却是完整的一行Javascript脚本代码。如果通过webdriver启动的浏览器没有关闭和出现异常,是可以正常执行该段代码的。否则,浏览器实例出现意料之外的问题。

from selenium import webdriverobject_existed = False
# driver = webdriver.Firefox()
# or driver = webdriver.Chrome()
if driver is not None:try:driver.execute_script('javascript:void(0);')object_existed = Trueexcept:# webdriver要求浏览器执行Javascript出现异常try:driver.quit()finally:driver = Nonefinally:pass
if not object_existed:# 浏览器已关闭或标签页已关闭或其他异常...

笔记:

“javascript:void(0);”看似毫无意义,其实它的存在和数学里的“0”和“空集”是一样的,是不可或缺的。这也验证了计算机科学与数学应用的关联和一致性。

Python + Selenium: 使用webdriver判断浏览器是否关闭相关推荐

  1. Python selenium 控制 360安全浏览器

    目前网上比较活跃的国内浏览器,几乎都是基于开源的谷歌Chromium浏览器修改的. 360安全浏览器基于Chromium(google谷歌)+Trident(IE)双内核.         建议还是使 ...

  2. python selenium 不弹出浏览器

    python selenium 不弹出浏览器 自动化测试弹出浏览器可以清晰的看到操作步骤,和执行页面,领导也喜欢看,并不适合所有场景,比如:自动sign...哇哈哈... 开发环境: python3. ...

  3. selenium webdriver(python)_selenium、webdriver及浏览器的关系及对应版本安装

    selenkium支持多种浏览器,包括Chrome,Safari,Firefox.Edge 等,我们以Chrome浏览器为例学习.先完成以下3步: 1 selenium安装 安装selenium和安装 ...

  4. Python+Selenium基础篇之2-打开和关闭火狐浏览器

    本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckodriver. ...

  5. Python selenium自动化操作Chrome浏览器

    ​ ​ 活动地址:CSDN21天学习挑战赛 文章目录 一.Selenium搭建环境 1.安装 2.安装Chrome安装浏览器驱动WebDriver 1)查看Chrome浏览器版本 2)在驱动器版本里选 ...

  6. python——selenium框架实现无头浏览器访问 + 规避检测配置

    备注: 有的时候,我们希望,selenium访问的时候,不要出现浏览器, 那么就需要进行配置.具体配置看代码. 运行代码 # !/user/bin/env python # -*- coding: u ...

  7. python+selenium环境配置及浏览器调用

    最近在学习python自动化,从项目角度和技术基础角度出发,我选择了python+selenium+appium的模式开始我的自动化测试之旅: 一.python安装 二.python IDE使用简介 ...

  8. Python selenium与pyautogui控制浏览器实现modis数据自动下载

    目录 序言: 准备工作: 基本思路: 完整代码: 序言: 上次提到通过modis连接下载数据的方式有很多,本文选择selenium模拟登录的方式通过谷歌浏览器下载,但是并不推荐这种方法,只是恰好学习了 ...

  9. python selenium操作打开的浏览器_Python_Selenium操作Firefox浏览器

    一.打开网址 方法说明:webdriver.Firefox()用于创建一个火狐浏览器的webdriver driver.get(url)用户打开固定的网址 实例如下: self.driver = we ...

最新文章

  1. js变量后面加问号是什么_js没那么简单(1)-- 执行上下文
  2. [YTU]_2917(Shape系列-3)
  3. java的for循环
  4. 花痴流口水颜文字_流口水可执行模型
  5. 数据结构链表之循环链表——4
  6. Eclipse中配置CORBA环境
  7. 使用Promise链式调用解决多个异步回调的问题
  8. 线程相关函数(1)-pthread_create(), pthread_join(), pthread_exit(), pthread_cancel() 创建取消线程
  9. 用友集团前端面经整理及答案
  10. Java集成第三方推送(极光推送)——文档篇
  11. 《互联网信息资源检索与利用》读书笔记
  12. iOS 苹果登录(第三方登录)
  13. dll hijack 学习
  14. opengl学习笔记
  15. Python 支付宝红包二维码制作步骤分享
  16. 计算机开机反复启动,电脑开机后反复重启原因 电脑开机后反复重启解决方法【详解】...
  17. java实体类及类属性判空
  18. 嵌入式linux开发笔记——Ubuntu的使用
  19. 杀狗问题(帽子问题)
  20. 毕业这五年走来,这些私藏Redis的最全知识点我贡献出来了

热门文章

  1. Vue实现三级联动样式二
  2. RA患者妊娠期使用依那西普维持缓解
  3. 【示波器专题】示波器一些自动测量项说明
  4. python 文本聚类
  5. hibernate.一对一关联
  6. vue.js的核心思想
  7. 2023系统分析师---文老师冲刺资料
  8. 抽奖不够吸引用户?根据用户心理进一步优化下吧
  9. Redis主从同步机制
  10. nginx配置反向代理缓存