【问题标题】:SSL Certificate Verification Failed - When using WebDriverManager in Python Selenium frameworkSSL 证书验证失败 - 在 Python Selenium 框架中使用 WebDriverManager 时
【发布时间】:2021-10-27 06:25:30
【问题描述】:

我正在使用 Python Selenium 框架。在这里,要启动 chrome 浏览器,而不是提供 chrome 二进制 (chrome.exe) 路径,我正在尝试使用 WebdriverManager 来获取最新版本的 Chrome 驱动程序(基于浏览器版本)。以下是该代码 -

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time

driver = webdriver.Chrome(ChromeDriverManager().install())

driver.get("https://google.com")
time.sleep(2)
driver.close()

当我运行此文件时,我收到 SSL 验证错误。下面是控制台输出 -

[WDM] - 

[WDM] - ====== WebDriver manager ======
[WDM] - Current google-chrome version is 94.0.4606
[WDM] - Get LATEST driver version for 94.0.4606
Traceback (most recent call last):
File "C:\KBApps\Python38\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
httplib_response = self._make_request(
File "C:\KBApps\Python38\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
self._validate_conn(conn)
File "C:\KBApps\Python38\lib\site-packages\urllib3\connectionpool.py", line 1010, in _validate_conn
conn.connect()
File "C:\KBApps\Python38\lib\site-packages\urllib3\connection.py", line 416, in connect
self.sock = ssl_wrap_socket(
File "C:\KBApps\Python38\lib\site-packages\urllib3\util\ssl_.py", line 449, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(
File "C:\KBApps\Python38\lib\site-packages\urllib3\util\ssl_.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\KBApps\Python38\lib\ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "C:\KBApps\Python38\lib\ssl.py", line 1040, in _create
self.do_handshake()
File "C:\KBApps\Python38\lib\ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\KBApps\Python38\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "C:\KBApps\Python38\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen
retries = retries.increment(
File "C:\KBApps\Python38\lib\site-packages\urllib3\util\retry.py", line 574, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='chromedriver.storage.googleapis.com', port=443): Max retries exceeded with url: /LATEST_RELEASE_94.0.4606 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:/Users/sainim/PycharmProjects/API_TestCMD/API_Test/driverDemo.py", line 5, in <module>
driver = webdriver.Chrome(ChromeDriverManager().install())
File "C:\KBApps\Python38\lib\site-packages\webdriver_manager\chrome.py", line 34, in install
driver_path = self._get_driver_path(self.driver)
File "C:\KBApps\Python38\lib\site-packages\webdriver_manager\manager.py", line 23, in _get_driver_path
driver_version = driver.get_version()
File "C:\KBApps\Python38\lib\site-packages\webdriver_manager\driver.py", line 41, in get_version
return self.get_latest_release_version()
File "C:\KBApps\Python38\lib\site-packages\webdriver_manager\driver.py", line 64, in get_latest_release_version
resp = requests.get(f"{self._latest_release_url}_{self.browser_version}")
File "C:\KBApps\Python38\lib\site-packages\requests\api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "C:\KBApps\Python38\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\KBApps\Python38\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\KBApps\Python38\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\KBApps\Python38\lib\site-packages\requests\adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='chromedriver.storage.googleapis.com', port=443): Max retries exceeded with url: /LATEST_RELEASE_94.0.4606 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')))

Process finished with exit code 1

我尝试使用 pip 更新 webdriver-manager、requests、urllib3。但它不起作用。

【问题讨论】:

    标签: python selenium ssl-certificate webdriver-manager webdrivermanager-python


    【解决方案1】:

    根本原因:这是您的 VPN/代理或公司网络的问题。

    webdriver-manager 不是原因。

    有两种解决方案:

    1. 在您的证书链中安装有效证书,check common october 2021 ssl problem with certificates
    2. webdriver-manager 很快就会有解决方案 - 在下一个版本 3.5.2(今天是 3.5.1)中禁用 SSL 验证的功能,此功能已在 master 分支中,请参阅 CHANGELOG

    【讨论】:

    • 谢谢。将 Webdrivermanager 版本更新到 3.5.2 并禁用 ssl 验证。
    • 如果有效 - 您可以投票作为批准的答案;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2012-05-26
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多