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

解决selenium 常见版本不兼容问题

目录

1、解决urllib3库不兼容的问题

2、解决chromedriver与浏览器版本不兼容的问题


【测试环境】

  • selenium:3.141.0
  • Python:3.10

1、解决urllib3库不兼容的问题

背景:在尝试启动selenium时代码出现ValueError错误,代码如下:

from selenium import webdriverdriver_path = 'E:\PycharmProjects\webUiTest\env\Scripts\chromedriver'
driver = webdriver.Chrome(executable_path=driver_path)
driver.get("https://www.baidu.com")

错误如下:

Traceback (most recent call last): File "E:\PycharmProjects\webUiTest\demo.py", line 10, in <module> driver = webdriver.Chrome(executable_path=driver_path) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 76, in __init__ RemoteWebDriver.__init__( File "E:\PycharmProjects\webUiTest\env\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 319, in execute response = self.command_executor.execute(driver_command, params) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 374, in execute return self._request(command_info[0], url, body=data) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 397, in _request resp = self._conn.request(method, url, body=body, headers=headers) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\_request_methods.py", line 144, in request return self.request_encode_body( File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\_request_methods.py", line 279, in request_encode_body return self.urlopen(method, url, **extra_kw) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\poolmanager.py", line 432, in urlopen conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\poolmanager.py", line 303, in connection_from_host return self.connection_from_context(request_context) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\poolmanager.py", line 328, in connection_from_context return self.connection_from_pool_key(pool_key, request_context=request_context) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\poolmanager.py", line 351, in connection_from_pool_key pool = self._new_pool(scheme, host, port, request_context=request_context) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\poolmanager.py", line 265, in _new_pool return pool_cls(host, port, **request_context) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\connectionpool.py", line 195, in __init__ timeout = Timeout.from_float(timeout) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\util\timeout.py", line 186, in from_float return Timeout(read=timeout, connect=timeout) File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\util\timeout.py", line 115, in __init__ self._connect = self._validate_timeout(connect, "connect") File "E:\PycharmProjects\webUiTest\env\lib\site-packages\urllib3\util\timeout.py", line 152, in _validate_timeout raise ValueError( ValueError: Timeout value connect was <object object at 0x0000000A6B6C8720>, but it must be an int, float or None.

 根据上面的错误内容来看错误都是有关urllib3库的错误,尤其是最后这里这个错误:

ValueError( ValueError: Timeout value connect was <object object at 0x0000000A6B6C8720>, but it must be an int, float or None.

显然就是版本不兼容导致的,查看urllib3的版本如下:

这个urllib3版本是最新的版本,那我们把版本降低到1.X的版本,因为selenium3.141.0并不是现在最新版本所以会和最新的urllib3库冲突,这里安装urllib3==1.26.8版本的,安装如下:

# 先卸载最新的版本

pip uninstall urllib3

# 安装指定版本

pip install urllib3==1.26.8

重新执行就可以正常启动了

2、解决chromedriver与浏览器版本不兼容的问题

1、查看Chrome浏览器的版本

  • 打开Chrome浏览器。
  • 在浏览器地址栏输入chrome://settings/help并回车。
  • 浏览器将显示当前安装的Chrome版本,例如“Google Chrome 版本  127.0.6533.100(正式版本)”。

2、查看ChromeDriver的版本

  • 打开命令行工具(在Windows上是CMD或PowerShell,在Mac或Linux上是Terminal)。
  • 输入chromedriver(如果你已经将ChromeDriver添加到了系统路径中)或./chromedriver或者直接在ChromeDriver的目录下),然后按回车。
  • ChromeDriver将显示其版本信息,类似于“Starting ChromeDriver 1127.0.6533.100 (...) on port 9515”。

3、确认版本是否匹配

  • ChromeDriver的版本号应该与Chrome浏览器的版本号的前三位数字相匹配。例如,如果Chrome浏览器的版本是100.0.4896.127,那么ChromeDriver的版本号应该是100.0.xxxx。
  • 如果ChromeDriver的版本低于Chrome浏览器的版本,你需要下载并安装一个新版本的ChromeDriver。
  • 如果ChromeDriver的版本高于Chrome浏览器的版本太多,也可能会出现兼容性问题。在这种情况下,尝试使用一个更接近浏览器版本的ChromeDriver。

4、下载对应浏览器的ChromeDriver版本

  • 通过上面三个步骤就可以知道对应的ChromeDriver和浏览器是否对应匹配了,如果不匹配则去官网下载对应的ChromeDriver版本。
  • 下载地址:Chrome for Testing availability
  • 下载对应的ChromeDriver版本后解压有两种放置方式:
    • 方式一:放在指定的目录管理,这种方式就需要在webdriver.Chrome(executable_path=driver_path)中指定ChromeDriver的目录。
    • 方式二:和python.exe文件放在同一目录,注意这里python.exe是你项目使用的python.exe,如果你使用的是虚拟环境,那么python.exe就是对应的虚拟环境目录,如下所示:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Golang Map 深度剖析:原理、实践与面试要点
  • 计算机毕业设计选题推荐-springboot 基于springboot的宠物健康顾问系统
  • Docker的Fig
  • 详解golang内存管理
  • AttributeError: module numpy has no attribute int报错
  • python 获取pdf文件中的超链接
  • 14、springboot3 vue3开发平台-前端-自定义菜单组件,根据路由动态渲染
  • 如何保证Redis缓存和数据库的数据一致性
  • Redmi 13C 5G 红米13R 5G 解锁BL 降级 MIUI 秒解锁BL 澎湃OS 降级
  • 8-5 循环神经网络 RNN 的实现
  • 利用java结合python实现gis在线绘图,主要技术java+python+matlab+idw+Kriging
  • 【JAVA基础】从内部类引用的局部变量必须是final或有效的final
  • 86.小米相机修改拍照(尺寸,画幅,比例)的方法
  • SAP B1系统设置和管理——数据所有权权限
  • 技术革新!MultiDesk:高效远程桌面管理工具,TAB切换引领新潮流!
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Odoo domain写法及运用
  • Spring框架之我见(三)——IOC、AOP
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 诡异!React stopPropagation失灵
  • 后端_ThinkPHP5
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 经典排序算法及其 Java 实现
  • 全栈开发——Linux
  • 使用Swoole加速Laravel(正式环境中)
  • linux 淘宝开源监控工具tsar
  • 从如何停掉 Promise 链说起
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • (1)虚拟机的安装与使用,linux系统安装
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (多级缓存)缓存同步
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net core 连接数据库,通过数据库生成Modell
  • @antv/x6 利用interacting方法来设置禁止结点移动的方法实现。
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [100天算法】-目标和(day 79)
  • [20171102]视图v$session中process字段含义
  • [AX]AX2012 R2 出差申请和支出报告
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [C#]使用深度学习算法opencvsharp部署RecRecNet广角图像畸变矫正校正摄像广角镜头畸变图像
  • [C++] sqlite3_get_table 的使用
  • [C++]打开新世界的大门之C++入门
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能
  • [Fri 26 Jun 2015 ~ Thu 2 Jul 2015] Deep Learning in arxiv
  • [hive] sql中distinct的用法和注意事项
  • [HNOI2008]Cards