selenium webdriver chrome 115 停止工作

回答 13 浏览 1.6万 2023-07-20

我在 Windows 上安装了 Chrome 115.0.5790.99,并使用 Selenium 4.10.0。在我的 python 代码中,我调用 service = Service(ChromeDriverManager().install()) ,它返回错误 ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790。我使用 ChromeDriverManager().install() 来确保使用最新的稳定版本网络驱动程序。如何解决问题?

我的简单代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time 
 
# Install Webdriver
service = Service(ChromeDriverManager().install())
 
# Create Driver Instance
driver = webdriver.Chrome(service=service)
 
# Get Web Page
driver.get('https://www.crawler-test.com')
time.sleep(5)
driver.quit()

错误输出:

Traceback (most recent call last):
  File "C:\Users\Administrator\Documents\...\test.py", line 7, in <module>
    service = Service(ChromeDriverManager().install())
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\webdriver_manager\chrome.py", line 39, in install
    driver_path = self._get_driver_path(self.driver)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\webdriver_manager\core\manager.py", line 30, in _get_driver_path
    file = self._download_manager.download_file(driver.get_driver_download_url())
                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\webdriver_manager\drivers\chrome.py", line 40, in get_driver_download_url
    driver_version_to_download = self.get_driver_version_to_download()
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\webdriver_manager\core\driver.py", line 51, in get_driver_version_to_download
    self._driver_to_download_version = self._version if self._version not in (None, "latest") else self.get_latest_release_version()
                                                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\webdriver_manager\drivers\chrome.py", line 62, in get_latest_release_version
    resp = self._http_client.get(url=latest_release_url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\webdriver_manager\core\http.py", line 37, in get
    self.validate_response(resp)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\webdriver_manager\core\http.py", line 16, in validate_response
    raise ValueError(f"There is no such driver by url {resp.url}")
ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790

我尝试了以下但没有成功:

在 Chrome 115 的 webdriver 之前如何解决该问题的任何建议将最终在此处发布 https://chromedriver.chromium.org/downloads

TaKo 提问于2023-07-20
您使用哪个版本的selenium?请参阅此 - stackoverflow.com/a/76463081/7598774Shawn 2023-07-20
13 个回答
#1楼
得票数 16

Selenium Manager 现在完全包含在 selenium 4.10.0 中,所以这就是您所需要的:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service()
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# ...
driver.quit()

如果在系统路径中找不到该驱动程序,Selenium Manager 将自动下载它。


如果您想知道为什么现在看到 ChromeDriverManager 的此错误,这是因为由于 Chromium 驱动程序重组,https://chromedriver.chromium.org/downloads 只能升级到版本 114新版 Chrome-for-Testing 团队。

Michael Mintz 提问于2023-07-20
这对我有用,安装了 Chrome 115; webdriver 下载了它可以找到的最新 chromedriver 版本 (114):Error getting version of chromedriver 115. Retrying with chromedriver 114 (attempt 1/5) 我需要将代码从:browser = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options) 更改为 browser = webdriver.Chrome(service=Service(), options=chrome_options)horace_vr 2023-07-29
selenium 刚刚发布了 Python 版本 4.11.2,支持较新的 chromedrivers。请务必在 Chrome 116 发布之前进行升级,以避免出现错误。Michael Mintz 2023-08-01
#2楼
得票数 9

这对我来说是工作

service = Service(ChromeDriverManager(version="114.0.5735.90").install())

BRUNO ALVES 提问于2023-07-22
#3楼
得票数 5

不确定您使用的是哪个版本的 selenium,如果您使用的是最新版本(例如 selenium v4.6.0 或更高版本),则不必使用第三方库(例如 WebDriverManager)来处理浏览器驱动程序。您的代码可以简化如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.crawler-test.com")
print(driver.title)

结果:

Crawler Test Site

Process finished with exit code 0

更新ChromeWebDriverManager 与确保 WebDriver 的稳定版本无关,它用于确保根据您的浏览器版本使用正确版本的驱动程序二进制文件 (chormedriver.exe)系统。话虽如此,现在有了 selenium v4.6.0 或更高版本,selenium 的内置工具 SeleniumManager 将为我们处理浏览器驱动程序。换句话说,SeleniumManager 将执行WebDriverManager 以前执行的操作。

参考: Selenium Manager 简介

Shawn 提问于2023-07-20
Shawn 修改于2023-07-20
我使用 ChromeDriverManager().install() 来确保使用最新稳定版本的 webdriver。它适用于最高 114 的版本。TaKo 2023-07-20
检查我更新的答案。如果您有疑问,请告诉我。Shawn 2023-07-20
那么,不需要使用 ChromeDriverManager().install() 吗?如何在实践中使用 SeleniumManager?TaKo 2023-07-20
不,不需要。如果您的selenium版本是4.6.0或更高版本,则无需执行任何操作,只需使用我答案中的代码即可。在内部,selenium 将为您下载并处理浏览器驱动程序二进制文件。Shawn 2023-07-20
#4楼
得票数 4

试试这个:service = Service(ChromeDriverManager(version="114.0.5735.90").install())

Vitalii 提问于2023-07-21
这是唯一适合我的解决方案。但必须手动设置版本并不理想。有更好的解决方案吗?paul 2023-07-25
Paul请参阅:stackoverflow.com/a/76830878/3633653iDevFS 2023-08-03
#5楼
得票数 3

我已经更新了webdriver-manager,之后没有遇到任何问题。

pip install --upgrade webdriver-manager
Edin Laletović 提问于2023-07-28
Tyler2P 修改于2023-08-02
#6楼 已采纳
得票数 1

在稳定的 webdriver 版本 115 发布之前,解决方案是使用测试 webdriver 并相应地测试 Chrome。步骤是:

  • 从系统中卸载当前安装的网络驱动程序和 Chrome;
  • 在这里找到 webdriver 和 Chrome 的稳定版本 https://googlechromelabs.github.io/chrome-for-testing/
  • 搜索二进制 chrome 和 chromedriver(webdriver 的版本 和 Chrome 应该是一样的!);
  • 安装Chrome(实际上你只需解压它并将其放入某个文件夹, 即:c:\chrome-test-ver);
  • 将文件夹 c:\chrome-test-ver 设置为 PATH 环境变量);
  • 安装webdriver.exe(只需解压并复制到Python文件夹中, 即:C:\Users\Administrator\AppData\Local\Programs\Python\Python311);
  • 使用 selenium 运行你的 python 脚本,它应该可以工作。
TaKo 提问于2023-07-20
#7楼
得票数 1

该错误与 webdriver-manager 版本有关。

请使用以下命令将 webdriver-manager 更新到最新版本:

pip install --upgrade webdriver-manager

它在版本 3.8.6(2023 年 4 月 13 日)中得到修复

修复了 Chrome/Edge 的版本下载逻辑:

  • if version="latest" - 下载 Chrome/Chromium 的 LATEST_RELEASE 和 Edge 的 LATEST_STABLE;
  • 如果 version=x.x.x - 下载 x.x.x;
  • 如果版本为 None - 尝试确定安装的浏览器版本,如果失败 - 下载“最新” - LATEST_RELEASE。
Andreito95 提问于2023-08-02
Andreito95 修改于2023-08-02
#8楼
得票数 0

从 Chrome v115 开始,您需要安装“用于测试的 Google Chrome” https://developer.chrome.com/blog/chrome-for-testing 在 Chrome 上本地运行任何自动化测试。

Tom Hobbs 提问于2023-07-26
#9楼
得票数 0

对于那些在 2023 年 7 月 26 日之后在使用 selenium 4.8.0 的测试应用程序中遇到问题的人的解决方案,实际上在 2023 年 7 月 26 日,chrome 自动更新到版本 115.0.5790.110 并且其 Web 驱动程序尚未上传到任何地方,最可靠的网站 https://googlechromelabs.github.io/chrome-for-testing/#stablehttps://chromedriver.chromium.org/downloads,但无网络驱动可用。

好消息是,我找到了解决方案,并且我的代码运行良好,我的测试工具也像旧工具一样运行良好。这是给您的代码。在运行这些代码之前,需要完成以下步骤:

步骤 - 01. pip uninstall selenium
步骤 - 02. pip install selenium==4.10.0
步骤 - 03. pip show selenium (确保 selenium 版本 4.10.0)已安装。
步骤 - 04. pip install webdriver_manager

##Python/selenium 4.10.0 中的代码

from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), 
options=options)

url = 'https://www.google.com/'
driver.get(url)
driver.maximize_window()
sleep(10)

如果有人想停止Chrome的自动更新,请随时问我,我也可以给你同样的解决方案。

Asif Ali Khan 提问于2023-07-30
#10楼
得票数 0

解决方案 :

在命令提示符或 pycharm 终端上:键入

pip uninstall webdriver_manager 单击 Y(是) 然后输入 pip install webdriver_manager

Ange L'étoile 提问于2023-08-03
通过额外的支持信息可以改进您的答案。请编辑添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何撰写良好答案的更多信息。Community 2023-08-07
#11楼
得票数 0

为了避免需要手动更新到最新版本,您可以尝试:

import urllib.request
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

try:
    service = Service(ChromeDriverManager().install())
except ValueError:
    latest_chromedriver_version_url = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE"
    latest_chromedriver_version = urllib.request.urlopen(latest_chromedriver_version_url).read().decode('utf-8')
    service = Service(ChromeDriverManager(version=latest_chromedriver_version).install())

options = Options()
options.add_argument('--headless') #optional.
driver = webdriver.Chrome(service=service, options=options)
driver.get(url)
iDevFS 提问于2023-08-03
iDevFS 修改于2023-08-03
#12楼
得票数 0

出现此问题的原因是从版本 115 开始,ChromeDriver 发布过程与 Chrome 的发布过程集成,即,它将在以下位置提供: Chrome 测试版 (CfT) 可用性信息中心。

如果您想要方便的 json: CfT JSON 端点

您可以编写方法从上面提到的链接下载 json,并下载适合您的 Chrome 版本的驱动程序。

参考:ChromeDriver - 适用于版本 115 及更高版本

Shine J 提问于2023-08-08
#13楼
得票数 -2

请在下面找到我的播放列表 https://youtube.com/playlist?list=PLXGQ7XfCauHvOHNhnbPydXlhntVDPe4hC

包含如何解决chrome 115问题以及如何使用chrome进行测试

prince batra 提问于2023-07-31
正如目前所写的,您的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何撰写良好答案的更多信息。Community 2023-08-04