【问题标题】:session not created: This version of ChromeDriver only supports Chrome version 74 error with ChromeDriver Chrome using Seleniumsession not created: This version of ChromeDriver only supports Chrome version 74 错误与 ChromeDriver Chrome 使用 Selenium
【发布时间】:2022-02-20 21:48:33
【问题描述】:

我正在尝试使用 rsDriver 函数运行 RSelenium,但是当我运行 rD <- rsDriver() 我收到一条消息,告诉我需要更新版本的 Chrome:

> rD <- rsDriver()
checking Selenium Server versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking chromedriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking geckodriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking phantomjs versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
[1] "Connecting to remote server"

Selenium message:session not created: This version of ChromeDriver only supports Chrome version 74
  (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.3 x86_64)

Could not open chrome browser.
Client error message:
     Summary: SessionNotCreatedException
     Detail: A new session could not be created.
     Further Details: run errorDetails method
Check server log for further details.

错误消息似乎说我需要 Chrome 版本 74.0.3729.6,但是当我查看 Chrome 的设置时,它告诉我我正在运行最新的稳定版本 (73.0.3683.75)。进一步谷歌搜索后,74.0.3729.6 是 Chrome 的预发布开发版本:我需要安装它才能将 ChromeDriver 与 RSelenium 一起使用吗?

我并不执着于使用 Chrome 的想法,但我无法让 rsDriver 使用 Firefox:当我指定 browser = "firefox" 时,rsDriver 向我提供了关于 ChromeDriver 不支持我的 Chrome 版本的相同错误消息。

我的会话信息是:

R version 3.5.2 (2018-12-20)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.3

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] wdman_0.2.4     forcats_0.3.0   stringr_1.3.1   dplyr_0.7.8     purrr_0.2.5     readr_1.3.1     tidyr_0.8.2    
 [8] tibble_2.0.1    ggplot2_3.1.0   tidyverse_1.2.1 rvest_0.3.2     xml2_1.2.0      RSelenium_1.7.5

【问题讨论】:

  • 下载这个旧版本。工作正常! >>--->chromedriver.storage.googleapis.com/index.html?path=2.46
  • 在我的例子中,如果错误说它只支持版本 76,我不能使用 chrome 76.xxx。如果我降级到 75.xxx,它说它只支持版本 75。如果我尝试最新版本(当前为 78),它可以工作
  • @BingLi224 使用的是哪个版本的 selenium 和 Python?我遇到了同样的问题,尽管 Chrome 的版本是 78.0.3904.70
  • @zzxwill Selenium 3.141.0、Python 3.7.3、Chrome 78.0.3904.70(当前,但不确定当时是什么)
  • 如果你有 choco,你可以“choco update chromedriver”

标签: r selenium google-chrome selenium-chromedriver rselenium


【解决方案1】:

对于 MacOS chromedriver 升级成功了:

brew upgrade --cask chromedriver

【讨论】:

  • 很好,这让我走上了正确的轨道,除了我使用的是chromedriver-beta,它期待更高版本的 Chrome。所以我做了什么:brew cask uninstall chromedriver-beta; brew cask install chromedriver
  • 这仅在您通过 brew 安装 chromedriver 时有效。我是通过直接下载安装的,所以先运行rm /usr/local/bin/chromedriver,然后运行brew cask install chromedriver来获取最新版本。无论如何,升级 chromedriver 是解决方案。
  • 这应该是公认的答案,而不是建议降级 chrome 的答案
  • 这解决了我的问题。
  • 自 2021 年起,如果您收到错误 Error: Unknown command: cask,则需要改为运行命令:brew reinstall chromedriver。有关详细信息,请参阅stackoverflow.com/questions/30413621/…。仅供参考,新的木桶安装语法是:brew install --cask chromedriver
【解决方案2】:

这个错误信息...

Selenium message:session not created: This version of ChromeDriver only supports Chrome version 74
  (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.3 x86_64)

...意味着ChromeDriver期望Chrome 浏览器版本是74.


Quick installation 最新的ChromeDriver

要安装最新版本的ChromeDriver,您可以使用:

  • 使用 Homebrew 的 Mac 用户: brew tap homebrew/cask &amp;&amp; brew cask install chromedriver
  • 基于 Debian 的 Linux 发行版: sudo apt-get install chromium-chromedriver
  • 安装了 Chocolatey 的 Windows 用户: choco install chromedriver

分析

你的主要问题是不相容在您使用的二进制文件版本之间,如下所示:

支持Chrome v74

  • 您正在使用当前发布的铬=73.0

所以两者之间存在明显的不匹配Chrome 驱动程序 v74.0.3729.6Chrome 浏览器 v73.0


解决方案

  • 降级ChromeDriverChromeDriver v73.0.3683.68级别。
  • 保持铬合金版本在Chrome v73等级。 (as per ChromeDriver v73.0.3683.68 release notes)
  • 干净的你的项目工作区通过你的集成开发环境重建您的项目仅具有必需的依赖项。
  • 如果你的基地网络客户端版本太旧,然后卸载它并安装最新的 GA 和发布版本网络客户端.
  • 执行你的@Test
  • 始终在tearDown(){}方法中调用driver.quit()来关闭和销毁网络驱动程序网络客户端实例优雅。

参考

您可以在以下位置找到相关的详细讨论:

【讨论】:

  • 我已将 ChromeDriver 降级到 v73.0.3683.68,清理项目工作区,并仅使用所需的依赖项重建它。当我运行 rD &lt;- rsDriver() 时,它现在给我一条不同的错误消息,结尾为:[1] "Connecting to remote server" Could not open chrome browser. Client error message: Undefined error in httr call. httr output: Failed to connect to localhost port 4567: Connection refused Check server log for further details. Warning message: In rsDriver() : Could not determine server status.
  • 如果这很明显(这是我第一次尝试做这样的事情),也很抱歉,但是什么是 Web 客户端,什么是 GA?此外,@Test 是什么,我可以在 RStudio 中运行它吗?
  • 网络客户端->Chrome 浏览器,遗传算法->一般可用性,@测试-> An annotation used to identify一个测试使用J单元 / 测试NG(你可以简单地认为测试)
  • 这只是关于如何在使用Selenium 时解决版本不匹配问题的通用答案。此答案根本不涉及 RRSelenium。这个接受的答案应该是下面@CAD 的答案。
  • +1 的解释(教一个人钓鱼等等)。我升级了我的 chromedriver 以匹配我的 chrome 版本(Chrome 帮助 -> 关于 - 版本)并且它已修复。
【解决方案3】:

我今天遇到了同样的问题,并从谷歌找到了这篇文章和其他文章。我想我可能有一个更直接的解决方案来修改您的代码。先前的答案在识别版本不匹配方面是正确的。

我尝试了建议的解决方案无济于事。我发现我的电脑上的版本是正确的。然而,这种不匹配错误并不是由计算机上安装的实际版本引起的,而是 RSelenium 代码默认寻找“最新”版本的 Chrome/ChromeDriver。有关参数,请参阅?rsDriver() 帮助页面。

如果您按照帮助文档中指定的代码运行binman::list_versions("chromedriver"),那么您可以识别出与该功能兼容的版本。就我而言,我能够使用以下代码建立连接。

driver &lt;- rsDriver(browser=c("chrome"), chromever="73.0.3683.68", extraCapabilities = eCaps)

您应该能够使用 chromever= 参数指定您的 Chrome 版本。不过,我不得不使用最接近的版本(我的 chrome 版本是“73.0.3683.75”)。

希望这可以帮助!

【讨论】:

  • CAD 的回答对我有用,需要注意 chrome://settings/help 查看和/或更新您的 Chrome 浏览器版本。就我而言,我单击更新以更新到版本:73.0.3683.86(官方构建)(64 位)
  • 看来您的变体更适合我的情况。但我找不到如何说量角器使用定义的版本。就像这个 chromever="73.0.3683.68"。就我而言。我使用比量角器要求更低版本的铬浏览器。这是我的案例stackoverflow.com/questions/55984924/…
  • 哟,先生,摇滚。我稍微修改了这段代码以始终使用最新版本:available.versions&lt;-binman::list_versions("chromedriver") latest.version = available.versions$win32[length(available.versions)] 谢谢!
  • 在哪里运行代码binman::list_versions("chromedriver")?如中指定什么文档?
  • 我使用:rsDriver(chromever = binman::list_versions("chromedriver")$win32[4])
【解决方案4】:

更新谷歌浏览器版本到74为我工作。

脚步:1. 前往Help -> About Google Chrome -> Chrome will automatically look for updates(将Chrome更新到最新版本)

【讨论】:

    【解决方案5】:

    我必须重新安装量角器才能拉出更新的webdriver-manager 模块。此外,根据@Mark 的评论,package-lock.json 可能正在锁定依赖项。

    npm uninstall protractor
    npm install --save-dev protractor
    

    然后,确保在重新安装后检查 node_modules/protractor/node_modules/webdriver-manager/config.json 中的 maxChromedriver 值,以验证它是否与所需的 Chrome 驱动程序版本匹配。

    【讨论】:

      【解决方案6】:

      更新

      我已经向 RSelenium 提交了 pull request,添加了我在原始答案中提出的 ChromeDriver 版本选择逻辑。直到它被合并(如果有的话),你可以安装它

      remotes::install_github("ropensci/RSelenium#237")
      

      然后你可以使用新的chromever = "latest_compatible"选项调用rsDriver(),它应该始终选择正确的 ChromeDriver 版本:

      RSelenium::rsDriver(browser = "chrome",
                          chromever = "latest_compatible")
      

      原答案

      我使用 RSelenium::rsDriver() 的默认 chromever = "latest" 设置遇到了同样的错误,导致无法尝试将 chromedriver 75.0.3770.8 与最新的 google-chrome-stable 74.0.3729.157 组合:

      session not created: This version of ChromeDriver only supports Chrome version 75
      

      由于这显然似乎是一个反复出现且非常烦人的问题,因此我提出了以下建议始终使用最新的兼容 ChromeDriver 版本的解决方法:

      rD <- RSelenium::rsDriver(browser = "chrome",
                                chromever =
                                        system2(command = "google-chrome-stable",
                                                args = "--version",
                                                stdout = TRUE,
                                                stderr = TRUE) %>%
                                        stringr::str_extract(pattern = "(?<=Chrome )\d+\.\d+\.\d+\.") %>%
                                        magrittr::extract(!is.na(.)) %>%
                                        stringr::str_replace_all(pattern = "\.",
                                                                 replacement = "\\.") %>%
                                        paste0("^",  .) %>%
                                        stringr::str_subset(string =
                                                                    binman::list_versions(appname = "chromedriver") %>%
                                                                    dplyr::last()) %>%
                                        as.numeric_version() %>%
                                        max() %>%
                                        as.character())
      

      上面的代码是仅在 Linux 下测试并使用一些 tidyverse 包(预先安装它们或在 base R 中重写)。对于其他操作系统,您可能需要对其进行一些调整,特别是将 command = "google-chrome-stable" 替换为系统特定的命令以启动 Google Chrome:

      • macOS 上,将command = "google-chrome-stable" 替换为command = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" 应该就足够了。

      • 在 Windows 上,plattform-specific bug 阻止我们直接调用 Google Chrome 二进制文件以获取其版本号。而是执行以下操作:

        rD <- RSelenium::rsDriver(browser = "chrome",
                                  chromever =
                                    system2(command = "wmic",
                                            args = 'datafile where name="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe" get Version /value',
                                            stdout = TRUE,
                                            stderr = TRUE) %>%
                                    stringr::str_extract(pattern = "(?<=Version=)\d+\.\d+\.\d+\.") %>%
                                    magrittr::extract(!is.na(.)) %>%
                                    stringr::str_replace_all(pattern = "\.",
                                                             replacement = "\\.") %>%
                                    paste0("^",  .) %>%
                                    stringr::str_subset(string =
                                                                binman::list_versions(appname = "chromedriver") %>%
                                                                dplyr::last()) %>% 
                                    as.numeric_version() %>%
                                    max() %>%
                                    as.character())
        

      基本上,代码只是确保最新的 ChromeDriver 版本匹配系统稳定的Google Chrome浏览器的major-minor-patch版本号作为chromever参数传递。此过程应遵守official ChromeDriver versioning scheme。引用:

      • ChromeDriver 使用与 Chrome 相同的版本号方案 (...)
      • ChromeDriver 的每个版本都支持具有匹配的主要、次要和构建版本号的 Chrome。例如,ChromeDriver 73.0.3683.20 支持以 73.0.3683 开头的所有 Chrome 版本。

      【讨论】:

      • 我们需要的英雄。谢谢! P.S:我编辑了 Windows 代码,让未来的读者更容易理解
      • ? 既然你测试成功了,我就把它正确地集成了!
      【解决方案7】:

      我今天处理了这个问题并升级了我的 webdrivermanager 为我解决了它(我以前的版本是 3.0.0):

      <dependency>
          <groupId>io.github.bonigarcia</groupId>
          <artifactId>webdrivermanager</artifactId>
          <version>3.3.0</version>
          <scope>test</scope>
      </dependency>
      

      【讨论】:

      • 我已经通过升级到 3.3.0 版本解决了同样的问题,谢谢
      • 我使用的是 1.x 版。更新到 3.3.0 也为我修复了它。
      • 您必须使用最新版本,即 <version>3.6.2</version>。
      • 我认为通过包括有关如何升级他们的“webdrivermanager”的步骤,这个答案会得到极大的改善。您在这里所做的只是提供了一些 XML,而没有太多解释。你介意用一些额外的细节来更新这个答案吗?谢谢。
      【解决方案8】:

      Travis CI 替代方案

      Francesco Borzi 的另一个答案对我不起作用。

      将此添加到您的 travis.yml:

      addons:
        chrome: stable
      
      before_script:
        - LATEST_CHROMEDRIVER_VERSION=`curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE"`
        - curl "https://chromedriver.storage.googleapis.com/${LATEST_CHROMEDRIVER_VERSION}/chromedriver_linux64.zip" -O
        - unzip chromedriver_linux64.zip -d ~/bin
      

      非常感谢并感谢 github 上的 tagliala:

      https://github.com/diowa/ruby2-rails5-bootstrap-heroku/commit/6ba95f33f922895090d3fabc140816db67b09672

      【讨论】:

        【解决方案9】:

        我真的在为 ChromeDriver v74.0.3729.6 和 Chrome 浏览器 v73.0 之间的这种不匹配而苦苦挣扎。我终于找到了一种让 ChromeDriver 更早版本的方法,

        1. 在 Chrome > 关于 Google Chrome 中,复制版本号,最后一组除外。例如,72.0.3626。

        2. 将该版本粘贴到此网址的末尾并访问它。它会返回一个版本,您应该复制该版本。 https://chromedriver.storage.googleapis.com/LATEST_RELEASE_

        3. 回到命令行,运行bundle exec chromedriver-update &lt;copied version&gt;

        【讨论】:

        • 我找到了解决方案,并教过 - 必须已经有这样的答案:)
        【解决方案10】:

        特拉维斯CI

        我在 Travis 中遇到了同样的问题并通过添加解决了:

        addons:
          chrome: stable
        

        到我的.travis.yml 文件。

        【讨论】:

        【解决方案11】:
        $ which chromedriver
        /usr/local/bin/chromedriver
        $ chromedriver --version
        ChromeDriver 78.0.3904.105
        

        我从https://chromedriver.chromium.org/downloads 下载了一个 zip 文件 它说“如果您使用的是 Chrome 版本 79,请下载 ChromeDriver 79.0.3945.36” 我使用的是 Chrome 版本 79。(我检查了chrome://settings/help)显然,对我来说错误是“这个版本的 ChromeDriver 只支持 Chrome 版本 78”

        然后我单击 zip 文件并将该“chromedriver”文件移动到 /usr/local/bin/ 目录中。那解决了这个问题。

        $ which chromedriver
        $ chromedriver --version
        ChromeDriver 79.0.3945.36
        

        【讨论】:

          【解决方案12】:

          这个解决方案对我有用

          1. 确保您使用的是 R 3.5.3 或更高版本
          2. driver &lt;- rsDriver(browser=c("chrome"), chromever="73.0.3683.68")

          【讨论】:

            【解决方案13】:

            遇到这个问题并能够通过两个主要步骤解决:

            1 - 通过自制软件 cli 更新到最新的 chromedriver

            brew cask upgrade chromedriver
            

            2 - 通过 Chrome GUI 更新到最新版本

            chrome://settings/help 或 cmd + , 然后在最后添加帮助(您的选择)

            从那里你应该登陆关于 Chrome 页面。在这里您需要验证您使用的是最新最好的版本(我遇到的问题是由于 cli 与当前 chrome 版本不匹配)

            如果出现错误,您将看到一个 update &amp; relaunch 主操作按钮。

            chrome“重新启动”后,它现在将拥有与您的 cli 匹配的最新版本

            例子:

            Google Chrome is up to date
            Version 80.0.3987.87 (Official Build) (64-bit)
            

            【讨论】:

              【解决方案14】:

              我在使用机器人框架(基于硒的框架)时遇到了同样的错误码头工人实例。原因是 docker 正在为 Chrome 使用缓存的google-chrome-stable_current_amd64.deb,但它安装了最新版本的最新 chrome 驱动程序。

              然后我使用下面的命令并解决了错误。

              docker-compose build --no-cache
              

              希望这对某人有帮助。

              【讨论】:

                【解决方案15】:

                我遇到了同样的错误:

                未创建会话:此版本的 ChromeDriver 仅支持 Chrome 版本 75

                ...

                驱动程序信息:driver.version:ChromeDriver

                我们正在从没有真正 UI 的计算机上运行测试,因此我必须通过命令行 (CLI) 工作。

                我首先检测安装在 Linux 计算机上的当前 Chrome 版本:

                $> google-chrome --version
                

                并得到了这样的回应:

                谷歌浏览器 74.0.3729.169

                然后我像这样更新了 Chrome 版本:

                $> sudo apt-get install google-chrome-stable
                

                再次检查版本后,我得到了这个:

                谷歌浏览器 75.0.3770.100

                然后 Selenium 测试能够顺利运行。

                【讨论】:

                • 这适用于chrome浏览器是通过repo/ppa安装的,无法自行更新的情况
                【解决方案16】:

                不再需要降级 Chrome,当您收到此错误时仅意味着是时候再次运行 webdriver-manager update

                【讨论】:

                  【解决方案17】:

                  您可以像这样指定 Chrome 安装的确切版本:

                  webdriver-manager update --versions.chrome 73.0.3683.75

                  在降级的情况下,也许你需要先做一个webdriver-manager clean

                  【讨论】:

                    【解决方案18】:

                    我遇到了同样的问题,只需为以前版本的 chrome 下载 chromedriver 文件即可解决。我发现 Chrome 的 79 版与当前版本的 Selenium 兼容。

                    然后我将它保存在指定路径中,并将该路径链接到我的webdriver

                    此链接中指定了确切的步骤: http://chromedriver.chromium.org/downloads

                    【讨论】:

                      【解决方案19】:

                      只需更新量角器:

                      npm install protractor@latest --save-dev
                      

                      【讨论】:

                        【解决方案20】:

                        我有几乎相同的问题,当运行我的 selenium 测试需要 chromedriver 包来运行 e2e 测试时,问题出现在管道内部。

                        My error build pipeline

                        问题只是因为在管道中(在我的例子中)有 chrome 版本 73,而我的 chromedriver 包安装在版本 74 上。

                        最后有两个简单的解决方案:

                        1. 降级你的 chrome
                        2. 降级您的 chromedriver 软件包版本。就我而言,因为我在管道内运行,我需要先安装 chromedriver 运行如下所示的硒测试。

                          - script: npm install chromedriver@73.0.0 --chromedriver-force-download displayName: 'Install Chrome'

                        【讨论】:

                        • 我遇到了同样的问题,如何知道 Jenkins 节点上的 chrome -version?
                        • 如果没有 chrome,如何在节点上安装 chrome 作为构建管道的一部分
                        • 要将 chrome 安装为构建管道的一部分,您只需添加我放在上面的任务脚本即可。
                        【解决方案21】:

                        今天我也遇到了同样的问题。

                        我的解决方案:

                        下载chromedriver最新稳定版:https://sites.google.com/a/chromium.org/chromedriver/

                        更新 Selenium 文件夹上的 chrome 驱动程序。这有点难,因为它位于您 PC 上名为 AppData 的隐藏文件夹中。以下是我在我的电脑(Windows 7)中的做法:

                        C: > users > your user > AppData(你需要在文件夹路径框中写这个,因为它是一个隐藏文件夹)> Local(这是葡萄牙语的文件夹名称,也许它会有不同的名称)>硒基础

                        在那里你会找到 chromedriver 应用程序。只需重命名它(如果它不起作用,您想要使用旧版本)然后粘贴最新版本。

                        【讨论】:

                          【解决方案22】:

                          我最近遇到了同样的问题。这是我的错误:

                          System.InvalidOperationException : session not created: This version of ChromeDriver only supports Chrome version 76 (SessionNotCreated)
                          

                          此修复对我有用:

                          • 确保没有正在运行的 chromedriver.exe 进程(如果需要,例如通过任务管理器将它们全部杀死)
                          • 转到 bin 文件夹并从那里删除 chromedriver.exe 文件(在我的例子中是:[project_folder]inDebug etcoreapp2.1

                          【讨论】:

                            【解决方案23】:

                            确保您拥有最新版本的 webdriver-manager。您可以使用npm i webdriver-manager@latest --save安装相同的

                            然后运行以下

                            command.webdriver-manager update
                            

                            【讨论】:

                              【解决方案24】:

                              我在我的 mac os big sur 上遇到了类似的问题 在 2021 年,在 mac 上正确的命令是

                              brew upgrade --cask chromedriver 
                              

                              【讨论】:

                                猜你喜欢
                                • 2022-07-13
                                • 1970-01-01
                                • 2019-08-07
                                • 1970-01-01
                                • 2022-08-18
                                • 2020-11-30
                                • 2022-12-02
                                • 1970-01-01
                                相关资源
                                最近更新 更多