会话未创建错误:无法创建会话:此版本的ChromeDriver仅支持Chrome 97版本,当前浏览器版本为100.0.4896.75。

14

我正在尝试启动Selenium WebDriver实例,但是出现了以下错误:

SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 97 Current browser version is 100.0.4896.75 with binary path *path here*

我已经尝试使用了 Chromium 98,它能正常工作,但是在版本 100 中发现了一个新的漏洞,因此我想要升级。

8个回答

9
在Mac M1上,我遇到了以下错误:
Selenium::WebDriver::Error::SessionNotCreatedError:
        session not created: This version of ChromeDriver only supports Chrome version 103
        Current browser version is 105.0.5195.125 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
          (Driver info: chromedriver=103.0.5060.134 (8ec6fce403b3feb0869b0732eda8bd95011d333c-refs/branch-heads/5060@{#1262}),platform=Mac OS X 12.5.1 arm64)

我只是使用了brew来升级chromedriver,这样就为我解决了问题。

brew upgrade chromeDriver


1
这对我有用,但在升级生效之前,我还必须手动终止一个仍在运行的chromedriver进程。 - Nico Burns

6

这个错误信息...

SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 97 Current browser version is 100.0.4896.75 with binary path...

这意味着ChromeDriver无法启动/生成一个新的Browsing Context,即会话。

你的主要问题在于以下二进制文件版本不兼容:

  • 你正在使用 chrome=100.0.4896.75
  • 你正在使用 chromedriver=97.0
  • chromedriver=97.0的发行说明清楚地说明了以下内容:

支持 Chrome 版本 97

因此,chromedriver=97.0chrome=100.0.4896.75之间存在明显的不匹配。


解决办法

确保:


4
谢谢您的回答。顺便说一下,“Selenium Webdriver” 确实是一个安装和维护都很麻烦的噩梦。chromedriver 只能与一个版本的 Chrome 兼容,并且必须不断保持与 Chrome 的自动更新同步,这只是这项技术难以维护的原因之一。在我们的团队中,仅有一个人的端到端测试能够正常运行,因为涉及到了 webdriver 的安装、版本控制、依赖性、操作系统和 CPU 问题(是的,所有这些问题都有可能影响)。作为一个 Angular 开发者,我很高兴 Protractor 被废弃了,并且迫不及待地想尝试像 Cypress 这样的工具(它不使用 Webdriver)。 - Kyle Vassella

3
如果有其他人需要帮助,yum install chromium 命令会安装 Chromium 的版本 102,而 npm install -g chromedriver 命令会安装版本 103,需要 Chromium 版本 103。
我知道回滚到旧版本并不是最佳解决方案,但是在我的系统上,安装与通过 yum 安装的 Chromium 版本相对应的 chromedriver 补充版本可以让事情运转起来。要安装与 yum 安装的 Chromium 版本相对应的旧版 chromedriver,首先需要前往这个网站https://chromedriver.chromium.org/downloads,并复制 102 这个版本号(例如这里是 102.0.5005.61)。
然后,通过运行以下命令即可安装"正确"版本的 chromedriver: CHROMEDRIVER_VERSION=102.0.5005.61 npm install -g chromedriver

1

如果Chrome浏览器版本和ChromeDriver版本都同步,那么您应该查找从哪个目录调用了ChromeDriver,这意味着可能存在其他目录正在执行ChromeDriver,其版本与浏览器不兼容。

在我的情况下,我的VS Code从项目目录node_modules/.bin/ChromeDriver中选择了ChromeDriver,所以我将其替换为最新版本,然后它就可以工作了。


1
对于Mac用户来说,我遇到了同样的问题。我的Chrome自动更新到了118版本(主要版本)。而Selenium则报告了这个问题。
  Selenium::WebDriver::Error::SessionNotCreatedError:
    session not created: This version of ChromeDriver only supports Chrome version 116
    Current browser version is 118.0.5993.70 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

我不得不使用以下命令来更新我的系统,一切都很顺利。
 brew -v update; brew upgrade --force-bottle; brew upgrade --cask; brew doctor; brew cleanup

这个命令更新了Chromedriver。

0

对我来说,问题在于我通过以下方式将chromedriver更新到最新的chrome版本:

npm run e2e:update-webdriver 执行了以下命令:webdriver-manager update --gecko false

因此,chromedriver版本比chrome浏览器版本高。为了解决这个差异,我必须运行以下命令:

sudo apt-get update 然后 sudo apt-get --only-upgrade install google-chrome-stable

希望这能帮助到某些人!


0
遇到了类似的问题。通常情况下,我会通过更改我的package.json文件中的版本号来解决这个问题,以使其与我的Chrome浏览器版本匹配。这种方法在chromedriver v115发布之前一直有效。然而,在chromedriver v115中,即使浏览器版本不匹配,它仍然可以正常工作。也就是说,我可以在我的package.json中写入以下内容:
 "webdriver:update": "webdriver-manager update --versions.chrome=114.0.5735.248",

当我的浏览器版本是115.0.5790.170时,端到端测试仍然有效。

现在chromedriver v116发布了,并且我的浏览器更新到v116.0.5845.96后,上述方法不再适用。我的解决方法是下载chromedriver-win64.zip并将其放置在C:\your project\node_modules\webdriver-manager\selenium目录下并进行解压。然后您将得到一个chromedriver-win64文件夹,其中包含chromedrive.exe文件。接下来要更新update-config.json文件,使其指向最新的chromedriver。请修改最后一行如下:

{
  "gecko": {
    ...
  },
  "chrome": {
    "last": "C:\\your project\\node_modules\\webdriver-manager\\selenium\\chromedriver-win64\\chromedriver.exe",
    "all": [
      "C:\\your project\\node_modules\\webdriver-manager\\selenium\\chromedriver_83.0.4103.39.exe",
      "C:\\your project\\node_modules\\webdriver-manager\\selenium\\chromedriver_114.0.5735.248.exe",
      "C:\\your project\\node_modules\\webdriver-manager\\selenium\\chromedriver_114.0.5735.16.exe"
    ]
  },
  "standalone": {
    '''
  }
}

经过这次处理,端到端测试又恢复正常了。

0
您可以按照以下方式使用version_main参数:
import undetected_chromedriver as uc
driver = uc.Chrome(version_main=116)

(116 是我当前安装的 Chrome 主版本)

查看 https://github.com/ultrafunkamsterdam/undetected-chromedriver/issues/572

但是如果你的浏览器已经更新,你应该将 version_main 更改为新的 Chrome 版本。 所以我使用这种方法来获取当前的 Chrome 版本,并将其作为 version_main 的值传递:

  1. 为 Python 安装 Webdriver Manager:pip install webdriver-manager

  2. 使用以下代码:

    import undetected_chromedriver as uc

    from webdriver_manager.core.os_manager import OperationSystemManager,ChromeType
    br_ver = OperationSystemManager().get_browser_version_from_os(ChromeType.GOOGLE)
    version_main=int(br_ver.split('.')[0]) options = uc.ChromeOptions()
    driver = uc.Chrome(version_main=version_main)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接