当前位置: 首页 > 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版本。这些工作对于因为版本不一致可能引起的真“闪退”应该也是有效果的。

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

相关文章:

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

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

【图论】最短路应用

1135. 新年好 题目 提交记录 讨论 题解 视频讲解 MarkDown视图Copy 重庆城里有 nn 个车站,mm 条 双向 公路连接其中的某些车站。 每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的…...

Spring Boot实战:使用策略模式优化商品推荐系统

在现代电子商务平台中,个性化的商品推荐系统是提升用户体验和增加销售额的关键。本文将通过一个Spring Boot实战项目,展示如何利用Java的设计模式——策略模式,来优化商品推荐系统。同时,我们将探讨Spring Boot中的一个重要特性&a…...

Navicat导入Sql文件至Mysql数据库,事务失效

Mysql 版本:8.0.39 Navicat 版本:17.x、16.x 结论: Navicat 导入sql文件,事务不会生效,无论怎么设置 mysql.exe 导入sql文件,事务生效 测试 准备一张表 name约束不能为空,用于测试事务失败…...

篮球运动场景物体检测系统源码分享

篮球运动场景物体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comp…...

Docker实操:安装MySQL5.7详解(保姆级教程)

介绍 Docker 中文网址: https://www.dockerdocs.cn Docker Hub官方网址:https://hub.docker.com Docker Hub中MySQL介绍:https://hub.docker.com/_/mysql ​ 切换到“Tags”页面,复制指定的MySQL版本拉取命令,例如 &#xff1a…...

git reflog

git reflog 是一个非常有用的命令,可以让你查看和回滚到 Git 仓库中的任何之前的状态。reflog 记录了你在 Git 仓库中的所有 HEAD 移动历史。下面是使用 reflog 回滚到之前状态的步骤: 1. 查看 Reflog 首先,你需要查看 reflog 记录&#xf…...

使用 Vue 3 和 TypeScript 实现带打字效果的仿 AI 分析展示组件

在这篇博客中,我将分享如何用 Vue 3 和 TypeScript 实现一个带打字效果的 AI 分析展示组件。该组件具有如下功能: 动态打字效果:模拟打字机逐步显示内容。自动滚动:内容超出容器高度时自动滚动到最新位置。 1. 组件实现需求 我…...

数据清洗-缺失值填充-K-NN算法(K-Nearest Neighbors, K-NN算法)

目录 一、安装所需的python包二、采用K-NN算法进行缺失值填充2.1代码(完整代码关注底部微信公众号获取)2.2以某个缺失值数据进行实战2.2.1代码运行过程截屏:2.2.2填充后的数据截屏: 三、K 近邻算法 (K-Nearest Neighbors, KNN) 介…...

爬虫----webpack

目录 一. 什么是webpack 出现的原因:同名函数 概念: 特征:大量缩进 webpack的格式 简单的webpack格式: 详细的webpack格式: 几个参数的运用 1. webpack数组形式 2. webpack对象格式 3.多个js文件打包 打印要扣的代码 …...

Spring Mybatis PageHelper分页插件 总结

1.简介 使用分页插件可以帮助我们自动分页&#xff0c;不用手动在写sql的分页逻辑。 2.配置步骤 在pom.xml中添加依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.11<…...

9、等保测评介绍

数据来源&#xff1a;9.等保测评介绍_哔哩哔哩_bilibili 信息系统等级测评 信息系统等级测评是测评机构依据国家信息安全等级保护制度的规定&#xff0c;按照相关管理规范和技术标准&#xff0c;对未涉及国家秘密的信息系统的安全等级保护状况进行检测评估的活动。 等级测评…...

解决Gson将长数字( json字符串)转换为科学记数法格式

Gson&#xff08;又称Google Gson&#xff09;是Google公司发布的一个开放源代码的Java库&#xff0c;主要用途为序列化Java对象为JSON字符串&#xff0c;或反序列化JSON字符串成Java对象。 依赖 Gradle: dependencies {implementation com.google.code.gson:gson:2.11.0 }…...

php环境搭建教程

PHP环境搭建教程 在构建和开发PHP应用程序时&#xff0c;搭建一个稳定、高效的PHP环境是基础且关键的一步。本教程将详细介绍如何在不同操作系统&#xff08;Windows和Linux&#xff09;上搭建PHP环境&#xff0c;包括Apache服务器的安装与配置、PHP的安装与配置、MySQL的安装…...

测试ASP.NET Core的WebApi项目调用WebService

虚拟机中部署的匿名访问的WebService&#xff0c;支持简单的加减乘除操作。本文记录在WebApi中调用该WebService的方式。   VS2022创建WebApi项目&#xff0c;然后在解决方案资源管理器的Connected Services节点点右键&#xff0c;选择管理连接的服务菜单。 点击下图圈红处…...

【用Java学习数据结构系列】对象的比较(Priority Queue实现的前提)

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study 专栏&#xff1a;用Java学习数据结构系列 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff…...

快手视频怎么保存到相册?(详细操作)

随着短视频的流行&#xff0c;快手已经成为越来越多人日常生活的一部分。无论是搞笑片段、旅行记录&#xff0c;还是生活点滴&#xff0c;用户们每天都会在快手上浏览到大量有趣的视频。有时候&#xff0c;我们会遇到特别想保存的视频&#xff0c;想要分享到朋友圈&#xff0c;…...

为什么 ECB 模式不安全

我们先来简单了解下 ECB 模式是如何工作的 ECB 模式不涉及链接模式&#xff0c;所以也就用不着初始化向量&#xff0c;那么相同的明文分组就会被加密成相同的密文分组&#xff0c;而且每个分组运算都是独立的&#xff0c;这也就意味着可以并行提高运算效率&#xff0c;但也正是…...

『功能项目』事件中心处理怪物死亡【55】

本章项目成果展示 我们打开上一篇54回调函数处理死亡的项目&#xff0c; 本章要做的事情是用事件中心处理怪物死亡后的逻辑 首先打开之前事件中心脚本&#xff08;不做更改&#xff0c;调用即可&#xff09;&#xff1a; using System.Collections.Generic; using UnityEngine…...

一个安卓鸿蒙化工具

DevEco插件&#xff0c;为已有安卓项目鸿蒙化加速。 目前支持&#xff1a; 1、安卓Vector Assets转svg&#xff1b; 2、json转ets model&#xff1b; 3、kotlin model转ets model&#xff1b; 下载地址&#xff1a;andtoharplugin1.1.0 安装&#xff1a; deveco插件安装选硬…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...