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

Mat*_*Law 89 selenium google-chrome r selenium-chromedriver rselenium

我正在尝试使用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.
Run Code Online (Sandbox Code Playgroud)

错误消息似乎表明我需要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
Run Code Online (Sandbox Code Playgroud)

Deb*_*anB 43

此错误消息...

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)
Run Code Online (Sandbox Code Playgroud)

...暗示ChromeDriver期望Chrome浏览器版本为74

您的主要问题是所使用的二进制版本之间的不兼容性,如下所示:

支持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实例。

  • 这只是关于如何解决使用“Selenium”时版本不匹配问题的通用答案。这个答案根本不涉及“R”或“RSelenium”。这个接受的答案应该是下面@CAD 的答案。 (2认同)

Yur*_*kyi 29

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

brew cask upgrade chromedriver
Run Code Online (Sandbox Code Playgroud)

  • 仅当您通过brew 安装了 chromedriver 时,这才有效。我是通过直接下载安装的,所以首先运行“rm /usr/local/bin/chromedriver”,然后运行“brew cask install chromedriver”来获取最新版本。无论如何,升级 chromedriver 是解决方案。 (3认同)
  • 这应该是公认的答案,而不是建议降级 chrome 的答案 (2认同)

小智 19

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

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

在此处输入图片说明

  • 这对我来说很棒。比接受的解决方案容易得多。 (3认同)

CAD*_*CAD 17

今天我遇到了同样的问题,并从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”)。

希望这可以帮助!

  • 哟,先生,摇滚。我稍微修改了这段代码,始终使用最新版本:`available.versions&lt;-binman::list_versions("chromedriver")latest.version = available.versions$win32[length(available.versions)]`谢谢! (2认同)

Sal*_*m B 15

更新

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

remotes::install_github("ropensci/RSelenium#237")
Run Code Online (Sandbox Code Playgroud)

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

RSelenium::rsDriver(browser = "chrome",
                    chromever = "latest_compatible")
Run Code Online (Sandbox Code Playgroud)

原答案

我使用RSelenium::rsDriver()的默认chromever = "latest"设置遇到了相同类型的错误,导致尝试chromedriver 75.0.3770.8与 latest结合失败google-chrome-stable 74.0.3729.157

session not created: This version of ChromeDriver only supports Chrome version 75
Run Code Online (Sandbox Code Playgroud)

由于这显然是一个反复出现且非常烦人的问题,因此我想出了以下解决方法来始终使用最新的兼容 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())
Run Code Online (Sandbox Code Playgroud)

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

  • macOS 上,替换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())
    
    Run Code Online (Sandbox Code Playgroud)

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

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

  • 我们需要的英雄。谢谢!PS:我编辑以包含 Windows 代码,以便将来的读者更容易 (5认同)
  • 自从您成功测试以来,我刚刚正确集成了它! (2认同)

dem*_*isx 11

我必须重新安装量角器才能拉出更新的webdriver-manager模块:

npm uninstall protractor
npm install --save-dev protractor
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢,为我工作。我安装了最新的量角器(5.4.2),但是依赖的webdriver-manager卡在了12.1.4上。卸载和重新安装量角器为我提供了更新的webdriver-manager-12.1.7 (2认同)
  • 您能否更新您的答案以包含@Mark 提供的信息?这可能很重要(这是我遇到的实际问题) (2认同)

cml*_*der 7

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

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>3.3.0</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)