session not created: This version of ChromeDriver only supports Chrome version 74 error with ChromeDriver Chrome using Selenium

我试图运行RSelenium使用rsDriver函数,但当我运行 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开发版本:我需要安装这个才能使用RSelenium的ChromeDriver吗?

我并不执着于使用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
438126 次浏览

此错误消息…

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


最新版本ChromeDriver的快速安装

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

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

分析

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

支持Chrome v74

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

因此,ChromeDriver v74.0.3729.6Chrome浏览器v73.0之间存在明显的不匹配


解决方案

  • ChromeDriver降级为ChromeDriver v73.0.3683.68级别。
  • 版本保持在Chrome v73级别。(根据ChromeDriver v73.0.3683.68发布说明)
  • 清洁你的项目工作空间到你的IDE重建你的项目只需要所需的依赖项。
  • 如果你的基本Web客户端版本太旧,那么卸载它并安装一个最新的GA和发布版本的Web客户端
  • 执行你的@Test
  • 总是在tearDown(){}方法中调用driver.quit()来关闭&优雅地销毁WebDriverWeb客户端实例。

参考

你可以在下面找到相关的详细讨论:

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

我尝试了提出的解决办法,但毫无效果。我发现我电脑上的版本是正确的。然而,这种不匹配错误不是由计算机上安装的实际版本引起的,而是RSelenium代码通过默认参数寻找Chrome/ChromeDriver的“最新”版本。有关参数,请参阅?rsDriver()帮助页。

如果您运行帮助文档中指定的代码binman::list_versions("chromedriver"),那么您可以识别与该函数兼容的版本。在我的例子中,我能够使用下面的代码来建立连接。

driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68", extraCapabilities = eCaps)

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

希望这能有所帮助!

我今天处理了这个问题,升级我的webdrivermanger为我解决了这个问题(我之前的版本是3.0.0):

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

我真的很纠结于ChromeDriver v74.0.3729.6和Chrome浏览器v73.0之间的不匹配。我终于找到了让ChromeDriver升级到早期版本的方法,

  1. 在Chrome > About谷歌Chrome中,复制除最后一组外的版本号。例如,72.0.3626。

  2. 将该版本粘贴到该url的末尾并访问它。它会返回一个版本,你应该复制。 李https://chromedriver.storage.googleapis.com/LATEST_RELEASE_ < / p > < / >

  3. 回到命令行,运行bundle exec chromedriver-update <copied version>

这个解决方案对我很有效

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

谷歌Chrome版本更新为74对我来说很有效。

<强>步骤: 1. 去帮助->关于谷歌Chrome -> Chrome将自动查找更新(更新Chrome到最新版本)

enter image description here

我几乎有同样的问题,问题是在运行我的selenium测试时,需要chromedriver包来运行e2e测试。

我的错误构建管道

问题只是因为在管道(在我的情况下)有chrome版本73,我的chromedriver包安装在版本74。

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

  1. 降低你的chrome浏览器
  2. 降低您的chromedriver软件包版本。在我的情况下,因为我在管道内运行,我需要安装chromedriver之前 运行selenium测试,如下图所示

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

特拉维斯CI

我在Travis遇到了同样的问题,并添加了如下内容:

addons:
chrome: stable

我的.travis.yml文件。

更新

我已经提交了一个把请求给RSelenium,添加了在我最初的答案中提出的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包(预先安装它们或在基础R中重写它)。对于其他操作系统,你可能需要稍微调整它,特别是用系统特定的命令替换command = "google-chrome-stable"来启动谷歌Chrome:

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

  • 在Windows上,a plattform-specific错误阻止我们直接调用谷歌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版本匹配系统稳定的Chrome浏览器谷歌的主-小补丁版本号作为chromever参数传递。此过程应遵循官方的ChromeDriver版本控制方案. xml。引用:

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

当我在码头工人实例中使用机器人框架(基于Selenium的框架)时,我得到了相同的错误。原因是docker使用缓存的Chrome google-chrome-stable_current_amd64.deb,但它已经安装了最新的Chrome驱动程序,这是一个较晚的版本。

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

docker-compose build --no-cache

希望这能帮助到一些人。

我也犯了同样的错误:

这个版本的ChromeDriver只支持Chrome 75版本

...

Driver info:驾驶者信息。版本:ChromeDriver

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

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

$> google-chrome --version

得到的回答是:

谷歌Chrome 74.0.3729.169

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

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

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

谷歌Chrome 75.0.3770.100

然后Selenium测试就可以顺利运行了。

对于MacOS的chromedriver升级起了作用:

brew upgrade --cask chromedriver

没有必要再降级Chrome了,当你得到这个错误只意味着是时候再次运行webdriver-manager update

Travis CI替代方案

又一个答案,因为弗朗西斯科·博尔齐的答案对我没用。

把这个添加到你的travel .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

只需更新量角器:

npm install protractor@latest --save-dev

我不得不重新安装量角器,以拉动更新的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驱动程序版本匹配。

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

我的解决方案:

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

更新Selenium文件夹上的chrome驱动程序。这有点难,因为它在你电脑上一个叫做AppData的隐藏文件夹中。下面是我在我的电脑(Windows 7)上是怎么做的:

C: > users >你的用户> \AppData(你需要在文件夹路径框中写这个,因为它是一个隐藏的文件夹)> Local(这是葡萄牙语的文件夹名,也许它会有一个不同的名字给你)> SeleniumBasic

在那里您将找到chromedriver应用程序。只需重命名它(以防它不起作用,您希望使用旧版本),然后粘贴最新版本。

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

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

这个方法对我很有效:

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

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

webdriver-manager update --versions.chrome 73.0.3683.75

在降级的情况下,可能需要先执行webdriver-manager clean

确保你有最新版本的webdriver-manager。你可以使用npm i webdriver-manager@latest --save来安装

然后运行以下命令

command.webdriver-manager update

我有同样的问题,并通过简单地下载一个chromedriver文件为以前版本的chrome解决了它。我发现Chrome 79版本与当前版本的Selenium是兼容的。

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

具体的步骤在这个链接中指定: http://chromedriver.chromium.org/downloads < / p >

遇到这个问题,可以通过2个主要步骤解决:

1 -更新到最新的chromedriver通过homebrew cli

brew cask upgrade chromedriver

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

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

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

如果你得到错误,你会看到一个update & relaunch主操作按钮。

在chrome "重新推出"现在它将拥有与cli匹配的最新版本

例子:

Google Chrome is up to date
Version 80.0.3987.87 (Official Build) (64-bit)
$ 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”

然后我点击压缩文件,并将“chromedriver”文件移动到/usr/local/bin/目录。这就解决了问题。

$ which chromedriver
$ chromedriver --version
ChromeDriver 79.0.3945.36
我的mac os bigsur上也有类似的问题 在2021年,在mac上正确的命令是

brew upgrade --cask chromedriver