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

目录

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

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


【测试环境】

  • selenium:3.141.0
  • Python:3.10

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

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

from selenium import webdriver

driver_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就是对应的虚拟环境目录,如下所示:

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值