会话未创建:此版本的ChromeDriver仅支持ChromeDriver出现Chrome 74版本错误,Chrome浏览器使用Selenium


164

我正在尝试使用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

1
下载此旧版本。工作良好!>> ---> chromedriver.storage.googleapis.com/index.html?path=2.46
纳尔逊·卡瓦略

1
就我而言,如果错误表明它仅支持版本76,则无法使用Chrome 76.xxx。如果我降级到75.xxx,则表示仅支持75版本。如果我尝试使用最新版本(当前为78),则可以正常运行
BingLi224 '19

@ BingLi224使用了哪个版本的selenium和Python?我遇到了同样的问题,尽管Chrome的版本是78.0.3904.70
zzxwill

@zzxwill Selenium 3.141.0,Python 3.7.3,Chrome 78.0.3904.70(当前,但不确定当时是什么)
BingLi224 '19

如果您有choco,则可以“ choco更新chromedriver”
Aus10 '19

Answers:


36

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

我尝试了建议的解决方案,但没有成功。我发现计算机上的版本正确。但是,此不匹配错误不是由计算机上实际安装的版本引起的,而是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”)。

希望这可以帮助!


1
CAD的答案对我很有帮助,请注意chrome:// settings / help来查看和/或更新您的Chrome浏览器版本。以我为例,我点击更新,更新版本:73.0.3683.86(正式版本)(64位)
user439089

看来您的变体更适合我的情况。但是我找不到如何对量角器使用定义的版本说的话。像这样chromever =“ 73.0.3683.68”。就我而言。我使用比量角器要求的版本低的铬浏览器。这是我的情况stackoverflow.com/questions/55984924/...
维克多Shelepen

2
哟,先生,摇滚。我对该代码进行了少许修改,以始终将最新版本与以下代码一起使用:available.versions<-binman::list_versions("chromedriver") latest.version = available.versions$win32[length(available.versions)] 谢谢!
StatsStudent

72

对于MacOS,chromedriver升级可以解决问题:

brew cask upgrade chromedriver

好的,这使我走上了正确的轨道,但我正在使用chromedriver-beta,因为我期望使用更高版本的Chrome。所以我做了什么:brew cask uninstall chromedriver-beta; brew cask install chromedriver
安东尼到

2
仅当您通过brew安装chromedriver时,此方法才有效。我已经通过直接下载安装了它,所以先运行rm /usr/local/bin/chromedriver然后brew cask install chromedriver获取最新版本。无论如何,升级chromedriver是解决方案。
lucas

2
这应该是公认的答案,而不是建议降级铬的答案
Guillaume Petit

这解决了我的问题。
negrotico19

62

此错误消息...

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之间存在明显的不匹配


  • 降级ChromeDriverChromeDriver v73.0.3683.68水平。
  • Chrome版本保持在Chrome v73级别。(根据ChromeDriver v73.0.3683.68发行说明
  • 清理你的项目工作,通过你的IDE重建仅需要依赖你的项目。
  • 如果您的基本Web客户端版本太旧,则将其卸载并安装最新的GA和发行的Web Client版本。
  • 执行您的@Test
  • 始终driver.quit()tearDown(){}方法内调用以优雅地关闭和销毁WebDriverWeb Client实例。

参考

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


我已经将ChromeDriver降级到v73.0.3683.68,清理了项目工作区,并仅使用所需的依赖项对其进行了重建。现在,当我运行时rD <- 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.
Matthew Law

如果这很明显也要道歉(这是我第一次尝试这样做),但是什么是Web客户端,什么是GA?另外,什么是@Test,我可以在RStudio中运行它吗?
马修·罗

Web客户端 - > 镀铬浏览器GA - > 通用Avaiibility@Test - >用于识别的注释测试使用JUnit的 / TestNG的(你可以简单地认为是测试
DebanjanB

1
这只是有关使用时如何解决版本不匹配问题的一般答案Selenium。这个答案并非指RRSelenium在所有。接受的答案应该是以下@CAD给出的答案。
conrad-mac

1
+1的解释(教男人钓鱼和其他一切)。我升级了chromedriver,使其与我的chrome版本(Chrome帮助->关于-版本)匹配,并且此问题已修复。
曲棍球J

26

Google Chrome版本更新到74对我有用。

步骤: 1.转到帮助->关于Google Chrome-> Chrome将自动查找更新(将Chrome更新为最新版本)

在此处输入图片说明


4
这对我来说很棒。比接受的解决方案容易得多。
安东尼到

22

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

npm uninstall protractor
npm install --save-dev protractor

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


2
谢谢,为我工作。我安装了最新的量角器(5.4.2),但是依赖的webdriver-manager卡在了12.1.4上。卸载并重新安装量角器给了我一个新的webdriver经理- 12.1.7
千电子伏

谢谢,也为我工作。我有Kev在先前评论中描述的问题。^
Toms Tumshais

1
这是我的问题。在package-lock.json被锁定的依赖。这不是错误,只需要更新依赖项即可。
标记

2
您能否更新答案以包括@Mark提供的信息?这可能很关键(这是我遇到的实际问题)
lealceldeiro

8

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

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

1
我已经通过升级到3.3.0版本解决了同一问题,谢谢
Rajesh Om,

1
我使用的是1.x版本。更新至3.3.0也为我修复了该问题。
ArtOfWarfare

您必须使用最新版本为<version> 3.6.2 </ version>。
Neyomal

我认为,通过包括有关如何升级其“ webdrivermanager”的步骤,将大大改善此答案。您在这里所做的所有工作都提供了一些XML,而没有太多的解释方式。您介意使用其他更多信息来更新此答案吗?谢谢。
StatsStudent

7

我只是碰到了同样的错误类型使用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:

  • Mac系统应该足以取代command = "google-chrome-stable"command = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

  • 在Windows上,特定于平台的错误使我们无法直接调用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())

基本上,代码只是确保将与系统稳定的Google Chrome浏览器的主次补丁版本号匹配的最新ChromeDriver版本作为chromever参数传递。此过程应遵循官方的ChromeDriver版本控制方案。引用:

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

3
我们需要的英雄。谢谢!PS:我编辑成包括Windows代码,使其更容易为未来的读者

2
since由于您已经成功测试了它,所以我已经正确集成了它!
Salim B

3

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

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

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

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


我找到了解决方案,并教了我-必须已经有这样的答案了:)
Aleks


3

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


2

这个解决方案对我有用

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


2

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

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

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)

2

只需在chrome浏览器中转到该网址

 chrome://settings/help  

和chrome会自动查找更新(将Chrome更新到最新版本)

完成:)


1

Docker实例中使用机器人框架(基于硒的框架)时,我遇到了相同的错误。原因是docker使用的google-chrome-stable_current_amd64.deb是Chrome 缓存,但是它安装了最新的chrome驱动程序,而该驱动程序是更高版本。

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

docker-compose build --no-cache

希望这对某人有帮助。


1

我遇到了同样的错误:

会话未创建:此版本的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

然后,硒测试得以顺利进行。


当通过repo / ppa安装chrome浏览器并且无法更新自身时,这适用
-prusswan

1

只需更新量角器:

npm install protractor @ latest --save-dev


1

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

webdriver-manager update --versions.chrome 73.0.3683.75

webdriver-manager clean降级的情况下,您可能需要先做。


1
$ 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

0

这对Linux用户很有用。我的问题微不足道,我使用了铬浏览器。我安装了chrome,所有问题均已解决。它可以与铬一起使用,但需要额外的操作。我没有获得成功。我可以将需要的驱动程序版本设置为量角器配置。它使用了最新的。我需要降级。


0

我遇到了几乎相同的问题,这些问题是在运行我的硒测试时出现在管道内部的,该测试需要chromedriver软件包才能运行e2e测试。

我的错误构建管道

问题仅仅是因为(在我的情况下)管道中的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?
Chandresh Mishra

如果没有铬,如何在构建管道的一部分上在节点上安装铬
Chandresh Mishra

要安装chrome作为构建管道的一部分,您只需添加我上面放置的任务脚本即可。
加丹尼

0

使用Visual Studio

在使用Visual Studio时,我无法通过遵循任何答案来解决版本不匹配的问题,而只是将Selenium.WebDriver和Selenium.WebDriver.ChromeDriver nuget包更新为最新版本即可。

我使用的是Chrome v78,并且将chromedriver升级到v78仍然出现了不兼容错误。CAD的回答使我找到了解决方案。


0

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

我的解决方案:

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

更新Selenium文件夹上的chrome驱动程序。这有点困难,因为它位于PC上一个名为AppData的隐藏文件夹中。这是我在计算机(Windows 7)中的操作方法:

C:>用户>您的用户> \ AppData(由于它是一个隐藏文件夹,因此需要在文件夹路径框中输入它)> Local(这是葡萄牙语的文件夹名称,也许您会使用其他名称) >硒基本

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


0

我最近有同样的问题。这是我的错误:

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


0

我遇到了同样的问题,只需下载一个 chromedriver旧版chrome文件。我发现Chrome的79版本与当前的Selenium版本兼容。

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

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


0

我有类似的问题,只是在Mac上更新了webdriver manager,在终端中使用它来更新webdriver manager-

 sudo webdriver-manager update

0
  1. 下载chrome的当前稳定发行版并进行安装(要检查您的Google chrome版本,请转到“帮助”>关于Google chrome并尝试在本地计算机上安装该版本。

要下载Google chrome版本,请访问= chromedriver.chromium.org网站


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.