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

【Python】谷歌浏览器总是自动更新,使用selenium跟chromedriver版本不匹配怎么办?

我发现,我的电脑对谷歌浏览器的禁止自动更新无效,哪怕是在任务计划程序里,禁止谷歌浏览器更新,也没有用。而且有时候点开右上角的三个点,也会自动更新版本。

但是往往chromedriver的更新版本更不上浏览器的版本哇,更不用说访问chromedriver 的网站总会遇到这个问题:
在这里插入图片描述

所以用selenium驱动的时候,就会出现下面的问题:

SessionNotCreatedException: session not created: This version of chromeDriver only supports chrome version 112version is 122.0.6261.70 with binary path c:\Program Files\Google\chrome \Applicatpa……

在这里插入图片描述

遇到上面的问题是因为,谷歌浏览器设立了自动更新,然而,我们的chromedriver版本与浏览器的版本不适应,无法启动……

遇到谷歌浏览器更新后,selenium的执行出现问题怎么办?

下载历史浏览器和驱动器

我的解决方法是保留了原来的谷歌浏览器,以及相对应的chromedriver版本,并且固定使用原来的谷歌浏览器就可以了,这样就不用担心浏览器自动更新的问题了。

如果没有保存原来的谷歌浏览器的版本的话,可以在这个网址这里下载历史浏览器版本:网址
在这里插入图片描述找到这个,下载下来:
在这里插入图片描述然后在chromedriver 的网站下载对应的版本,网址

在这里插入图片描述(找到跟谷歌浏览器同一版本的驱动器)

在这里插入图片描述
(驱动器很长一段时间都维持在114的版本就不再更新了,嘤嘤嘤~)

如果无法下载的话,可以在我上传的资源地方,下载我常用的【历史谷歌浏览器】和chromedriver ~

详细链接:历史谷歌浏览器和对应的chromedriver文件,防谷歌浏览器自动更新影响selenium运行

不过这样一来,也会有新的问题:新的版本的谷歌浏览器和旧版本的谷歌浏览器会有使用冲突,一般程序会自动调用原来的浏览器(也就是会自动更新的那个)

所以就要加上指定使用哪个路径下的chrome浏览器了,代码:options.binary_location=+chrome的路径

全部代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_argument('--verbose')#指定调用哪个路径下的谷歌浏览器
options.binary_location=r'C:\Program Files (x86)\Google\chrome.exe'chromedriver_path = r"D://anaconda//chromedriver.exe"  
service = Service(executable_path=chromedriver_path)
#service.log_path = '/path/to/chromedriver.log'driver = webdriver.Chrome(service=service, options=options)
driver.get('http://www.baidu.com')

于是就执行完成啦!
在这里插入图片描述

自动下载当前浏览器对应驱动

或者使用ChromeDriverManager()的方法,自动下载当前浏览器对应驱动的方法,实测好用!
(缺点是运行起来的时候会受网络影响,网页打开得比较慢)

from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
service = ChromeService(ChromeDriverManager().install())  # 自动下载当前浏览器对应驱动
driver = webdriver.Chrome(service=service)

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【基于C++的产品入库管理系统】
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于模型-数据混合驱动的区域能源互联网韧性在线评估》
  • chattr:修改文件的特殊属性
  • 【BFS专题】— 解决拓扑排序问题
  • 合宙Air201模组LuatOS:PWRKEY控制,一键解决解决关机难问题
  • 数据权限的设计与实现系列9——前端筛选器组件Everright-filter集成框架开发2
  • TCP套接字【网络】
  • zabbix之钉钉告警
  • 【Qnx】使用ClockCycles完成计时功能
  • 零拷贝技术在现代编程语言和中间件中的应用
  • ROS 编程入门的介绍
  • LabVIEW 可以同时支持脚本编程和图形编程
  • 细胞分裂检测系统源码分享
  • 在线包装盒型生成工具,各种异型包装盒型,PDF导出方便
  • Edegex Foundry docker和源码安装
  • 自己简单写的 事件订阅机制
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Magento 1.x 中文订单打印乱码
  • Sass 快速入门教程
  • Tornado学习笔记(1)
  • TypeScript实现数据结构(一)栈,队列,链表
  • WebSocket使用
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 将 Measurements 和 Units 应用到物理学
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 阿里云ACE认证学习知识点梳理
  • 容器镜像
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (0)Nginx 功能特性
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (C#)一个最简单的链表类
  • (ZT)出版业改革:该死的死,该生的生
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (南京观海微电子)——I3C协议介绍
  • (十八)Flink CEP 详解
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)iOS字体
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .bat批处理(六):替换字符串中匹配的子串
  • .htaccess配置重写url引擎
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET上SQLite的连接
  • ??在JSP中,java和JavaScript如何交互?
  • @EventListener注解使用说明
  • [Android View] 可绘制形状 (Shape Xml)
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [C++]Leetcode17电话号码的字母组合
  • [C++]多态
  • [CISCN2019 华东南赛区]Web11