当前位置: 首页 > news >正文

Selenium打开浏览器后闪退问题解决

笔者这两天在做一个自动化方案,用来优化数据统计。其中一部分数据需要通过云上堡垒机跳转访问,而这个堡垒机在笔者日常使用的火狐浏览器上运行不是很正常(表现在有些复制粘贴按钮显示不太灵敏)。

但在Edge浏览器上基本正常,因此笔者自动化也准备通过Selenium访问Edge浏览器来实现。

然而问题来了,笔者在进行Selenium打开Edge浏览器测试时,发现网页刚被打开后,就闪退了!而终端窗口还会提示

“DevTools listening on ws://127.0.0.1:59791/devtools/browser/78d01a4b-6a19-40ba-8736-b1bca66d5952
[27628:15544:0914/095450.252:ERROR:edge_qqbrowser_importer_utils_win.cc(155)] QQBrowser user data path not found.”

的错误,如下图:

在这里插入图片描述
笔者一度以为这是的的确确的闪退,因为既有报错信息,又有闪退行为。

然后一番试验、上网查询、研究,快两天过后,今天终于在恍然间将这个问题算是彻底征服。

节省读者时间,先放解决措施

这个“闪退”是正常的!而且实质上并非真的闪退,而是Selenium Webdriver的正常行为。

接下来做一个简明的解释,相信遇到过同样疑问的朋友很快就会明白了:

1、Selenium Webdriver对于不同浏览器的行为会有些许差异。而打开网址后的默认行为就是差异之一。

例如使用下面这段大家基本都会默认使用的调用代码:

from selenium import webdriver#driver = webdriver.Edge()
#driver = webdriver.Chrome()
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")

经笔者测试,Firefox会停留在当前页面,默认不会自动关闭浏览器;而Chrome和Edge均会自动关闭浏览器。

就是这个小小的差异,而对于笔者这个日常将火狐浏览器作为默认浏览器,并只在火狐浏览器做了大量自动化工作的人来说,对于浏览器的默认行为潜移默化认可了,误以为Chrome和Edge的自动关闭是“闪退”。。。

因此,如果非要Chrome和Edge不自动关闭,加个延时等待就可以了

例如:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import timechrome_options = Options()
chrome_options.add_argument('--incognito') # 添加无痕模式的参数executable_path="C:\chromedriver-win64",
driver = webdriver.Chrome( options=chrome_options)
driver.get("https://www.baidu.com")time.sleep(60)#driver = webdriver.Edge()
#driver.get("https://www.baidu.com")

2、“DevTools listening on ws://127.0.0.1:59791/devtools/browser/”也的确不算是错误信息,笔者认为更准确是告警提示,这个用搜索的智能回答来解释吧,笔者认为回答得挺好,回答如下图:

在这里插入图片描述
至此,疑惑及问题彻底解决,笔者内心总算舒坦了:)

恍然醒悟之前,其实笔者也去核对了浏览器版本、也去Chrome和Edge开发者官网下载了对应版本的msedgedriver.exe和chromedriver.exe并将其保存路径加入了系统Path环境变量。同时也检查了Python版本、Selenium版本。这些工作对于因为版本不一致可能引起的真“闪退”应该也是有效果的。

到此,完毕,希望帮助到遇到同样问题或疑惑的朋友们;)

http://www.lryc.cn/news/443141.html

相关文章:

  • 【图论】最短路应用
  • Spring Boot实战:使用策略模式优化商品推荐系统
  • Navicat导入Sql文件至Mysql数据库,事务失效
  • 篮球运动场景物体检测系统源码分享
  • Docker实操:安装MySQL5.7详解(保姆级教程)
  • git reflog
  • 使用 Vue 3 和 TypeScript 实现带打字效果的仿 AI 分析展示组件
  • 数据清洗-缺失值填充-K-NN算法(K-Nearest Neighbors, K-NN算法)
  • 爬虫----webpack
  • Spring Mybatis PageHelper分页插件 总结
  • 9、等保测评介绍
  • 解决Gson将长数字( json字符串)转换为科学记数法格式
  • php环境搭建教程
  • 测试ASP.NET Core的WebApi项目调用WebService
  • 【用Java学习数据结构系列】对象的比较(Priority Queue实现的前提)
  • 快手视频怎么保存到相册?(详细操作)
  • 为什么 ECB 模式不安全
  • 『功能项目』事件中心处理怪物死亡【55】
  • 一个安卓鸿蒙化工具
  • PyQt5库学习之QFileDialog.getExistingDirectory函数
  • AUTOSAR_EXP_ARAComAPI的5章笔记(9)
  • 京东-第2题-撞车
  • Vue3流程图插件-Vue Flow
  • 初始网络编程(下)
  • java计算机毕设课设—土地档案管理系统(附源码、文章、相关截图、部署视频)
  • 第4步CentOS配置SSH服务用SSH终端XShell等连接方便文件上传或其它操作
  • Spring:统一结果私有属性造成的前端无法访问异常报错问题
  • thinkphp 做分布式服务+读写分离+分库分表(分区)(后续接着写)
  • webpack的使用
  • MATLAB智能优化算法-学习笔记(3)——大规模邻域搜索算法求解旅行商问题【过程+代码】