昨天上服务器检查了一下小程序后端运行是否良好,发现与selenium有关的模块的进程全挂了。惊慌失措之下重试了爬虫模块的代码,发现本机上正常运行的代码,在ubuntu上运行时出现报错:

NoSuchWindowException: Browsing context has been discarded

百度了很久也没有得到确切的解释,有说是Firefox浏览器版本与驱动不兼容之类的,但是之前一个多月都有正常运行。

后来我觉得putty很卡,感觉可能是内存炸了,运行爬虫监测了一下内存,发现在点击搜索引擎时内存占用激增,直至报错。

但是尝试了很多方法都没有能够解决selenium内存占用导致崩溃的方法;

其中一个有稍许效果的方法是每次操作一步后就清理缓存?

browser = selenium.webdriver.Firefox()
browser.get("...")
browser.delete_all_cookies()
browser.find_element_by_xpath("...").click()
browser.delete_all_cookies()
...
browser.quit()

但是还是无法阻止OOM的发生。

后来发现内存溢出后还会出现各种各样奇怪的报错,总之报错不止上面这一种情况,有的记不清楚了,我都快要抓狂了。

回寝跟队友讲了这件事情,严密地分析了一阵子觉得要么是服务器内存太小不够容量,要么是服务器带宽不够卡死在一个页面上,要么是服务器流量将竭,网速太慢。

然后我们开始考虑要不要升级换个好一点的服务器,于是先重启了一下服务器。

重启完毕,一切都正常了,爬虫不卡了,错也不报了。

这个故事告诉我们,无论发生什么事,先restart再说。

【问题解决】Selenium——NoSuchWindowException: Browsing context has been discarded相关推荐

  1. web自动化框架抽取示例【Java+selenium】

    web自动化测试框架抽取示例 例子:测试登录模块,对登录的账号和密码进行不同的case校验. 1.1.1 无优化代码login_1 package com.lee.auto.testFrome; im ...

  2. html中嵌套iframe页面_selenium表单切换(iframe)

    在做web自动化的过程中会遇到一些弹出的登录页面,定位后,执行程序发现还是出现报错,其实定位可能没有问题,而是表单再作怪,也就是iframe iframe iframe是HTML标签,作用是文档中的文 ...

  3. Selenium1 Selenium2 WebDriver

    内容摘要: Selenium 1 原理 WebDriver WebDriver 组件 WebDriver 协议 Remote End 处理流程 Commands & Endpoints &am ...

  4. 从一道题浅说 JavaScript 的事件循环

    阮老师在其推特上放了一道题: new Promise(resolve => {resolve(1);Promise.resolve().then(() => console.log(2)) ...

  5. edge浏览器 开启java,启动Edge浏览器,然后等待其关闭[重复]

    小编典典 这是一个示例程序,可以通过某种方式设法证明硒库满足您所需的功能.您需要先下载硒库并将其设置为IDE,然后才能运行此程序. 该程序允许您单击一个按钮.然后,Firefox浏览器会自动打开并在几 ...

  6. HTML语义化:HTML5新标签——template

    一.前言 当我们使用String-base的模板引擎(如Handlebars.js等)时,要么就通过外部文件存放模板文本,需要时再通过XHR或script标签加载进来:要么通过<script t ...

  7. 跟着 Event loop 规范理解浏览器中的异步机制

    原文发自我的 GitHub blog,欢迎关注 前言 我们都知道 JavaScript 是一门单线程语言,这意味着同一事件只能执行一个任务,结束了才能去执行下一个.如果前面的任务没有执行完,后面的任务 ...

  8. JavaScript权威指南(第六版) 初读笔记

    JavaScript的5种原始类型:undefined.null.布尔值.数字和字符串. JavaScript中两个非常重要的数据类型是对象和数组. 通过方括号定义数组元素和通过花括号定义对象属性名和 ...

  9. JavaScript权威指南--window对象

    知识要点 window对象及其客户端javascript所扮演的核心角色:它是客户端javascript程序的全局对象.本章介绍window对象的属性和方法,这些属性定义了不同的API,但是只有一部分 ...

  10. CVE-2016-1779技术分析及其背后的故事

    xlab · 2016/04/21 10:26 Author:[email protected] 0x00 前言 Geolocation API被用来获取用户主机设备的地理位置,并且它有一套完整的保护 ...

最新文章

  1. Win2008 R2 RemoteApp深度体验之四,RemoteApp程序测试
  2. 福昕pdf编辑器 android,机PDF编辑器安卓/iOS哪家强?职场达人都在用
  3. 把RNN植入体内,仅凭一张“薄片”,就能直接检测你有无心律异常 | Science子刊...
  4. 单点登录系统(SSO)和Session共享解释
  5. pygame (1) 移动小乌龟
  6. linux 系统网络服务器组建,配置和管理实训教程 pdf,Linux网络服务器配置管理项目实训教程2...
  7. 二值化每个特征,微软用1350亿参数稀疏神经网络改进搜索结果
  8. Mac OS Sierra安装Imagick
  9. 「第二篇」全国一等奖,经验帖。
  10. android调用python框架_在Java中从Android应用程序执行Python脚本?
  11. [转]Boosting
  12. 跳跃回溯____寻找最长平台
  13. 刚刚,Google 官方发布了 2 份编程指南,干货十足!
  14. mysql as 后面字段,mysql 字段as详解及实例代码
  15. 电脑录屏软件哪个好?高清流畅的录屏方法在这里!
  16. android音视频焦点切换
  17. android 自定义指南针,android 自定义指南针view
  18. 老婆:“给我讲讲你们程序员好笑的事情呗?”我扔给她这篇文章,她狂笑不止!
  19. 猿创征文 | DevOps运维的10个日常使用工具分享
  20. WEB端和手机端-三种提示框架

热门文章

  1. es - elasticsearch - aggs - metrics - percentile_ranks
  2. Thinkphp 5.0实战 仿百度糯米开发多商家电商平台
  3. 有关Windows10中诊断和反馈隐私设置
  4. android 通话自动录音服务
  5. 开源硬件的舞者--WIZnet
  6. 修改war包中数据库配置信息
  7. JSON.prase()报错 unexcept token
  8. Android源码阅读记录
  9. 简单的base64加密解密
  10. 大白菜U盘PE重装系统