未创建会话:此版本的 ChromeDriver only supports Chrome version 74 error with ChromeDriver Chrome using Selenium
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 的预发布开发版本:我需要安装它才能将 ChromeDriver 与 RSelenium 一起使用吗?
我并不执着于使用 Chrome 的想法,但我无法让 rsDriver 使用 Firefox:当我指定 browser = "firefox"
时,rsDriver 给了我同样的错误有关 Chrome 驱动程序不支持我的 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
这个错误信息...
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 Browser 版本为 74.
Quick installation 最新的 Chrome 驱动程序
要安装最新版本的 ,您可以使用:
- Mac 使用 Homebrew 的用户:
brew tap homebrew/cask && brew cask install chromedriver
- 基于 Debian 的 Linux 发行版:
sudo apt-get install chromium-chromedriver
- Windows 用户安装了 Chocolatey:
choco install chromedriver
分析
您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:
- 您正在使用 chromedriver=74.0.3729.6
- chromedriver=74.0.3729.6 的发行说明清楚地提到了以下内容:
Supports Chrome v74
- 您使用的是当前发布的chrome=73.0
因此 Chrome 驱动程序 v74.0.3729.6 和 Chrome 浏览器 v73.0 之间存在明显的不匹配
解决方案
- 将Chrome驱动程序降级到ChromeDriver v73.0.3683.68级别。
- 将 Chrome 版本保持在 Chrome v73 级别。 (as per ChromeDriver v73.0.3683.68 release notes)
- 通过 IDE 和 [=44] 清理 您的 项目工作区 =]重建你的项目只需要依赖。
- 如果您的基础 Web Client 版本太旧,则卸载它并安装最新的 GA 和发布版本的 Web Client。
- 执行你的
@Test
.
- 始终在
tearDown(){}
方法中调用 driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例.
参考
您可以在以下位置找到相关的详细讨论:
我今天遇到了同样的问题,并在 post 和 Google 中找到了其他问题。我想我可能有一个更直接的解决方案来修改您的代码。先前的答案在识别版本不匹配方面是正确的。
我尝试了建议的解决方案但无济于事。我发现我的电脑上的版本是正确的。但是,此不匹配错误不是由计算机上安装的实际版本引起的,而是 RSelenium 代码正在默认寻找 Chrome/ChromeDriver 的 "latest" 版本。有关参数,请参阅 ?rsDriver()
帮助页面。
如果您运行按照帮助文档中指定的代码binman::list_versions("chromedriver")
,那么您可以识别与该功能兼容的版本。就我而言,我能够使用以下代码建立连接。
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68", extraCapabilities = eCaps)
您应该能够使用 chromever=
参数指定您的 Chrome 版本。不过,我不得不使用最接近的版本(我的 chrome 版本是“73.0.3683.75”)。
希望对您有所帮助!
我今天处理了这个问题,升级我的 webdrivermanager 解决了这个问题(我以前的版本是 3.0.0):
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
我真的为 Chrome 驱动程序 v74.0.3729.6 和 Chrome 浏览器 v73.0 之间的这种不匹配而苦恼。我终于找到了将 Chrome 驱动程序升级到早期版本的方法,
在Chrome>关于GoogleChrome中,复制版本号,最后一组除外。例如,72.0.3626.
将该版本粘贴到此 url 的末尾并访问它。它会返回一个版本,您应该复制该版本。
https://chromedriver.storage.googleapis.com/LATEST_RELEASE_
回到命令行,运行bundle exec chromedriver-update <copied version>
这个解决方案对我有用
- 确保您使用的是 R 3.5.3 或更高版本
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68")
将 Google Chrome 版本更新到 74 对我有用。
步骤:
1. 进入Help -> About Google Chrome -> Chrome 会自动查找更新(update Chrome to the latest version)
我遇到了几乎相同的问题,当 运行 我的 selenium 测试需要 chrome 驱动程序包到 运行 e2e 测试时,问题出现在管道内部。
My error build pipeline
问题只是因为在管道中(在我的例子中)有 chrome 版本 73,而我的 chrome 驱动程序包安装在版本 74 上。
Finally there are two simple solutions:
- Downgrade your chrome
Downgrade your chromedriver package version. in my case, cause i running inside the pipeline i need to install chromedriver before
running the selenium test like displayed below.
- script: npm install chromedriver@73.0.0 --chromedriver-force-download
displayName: 'Install Chrome'
特拉维斯 CI
我在 Travis 中遇到了同样的问题并通过添加解决了:
addons:
chrome: stable
到我的 .travis.yml
文件。
更新
我已经向 RSelenium 提交了 pull request,添加了 Chrome 驱动程序版本 select 我在原始答案中提出的离子逻辑。在它被合并之前(如果有的话),你可以用
安装它
remotes::install_github("ropensci/RSelenium#237")
然后您可以使用新的 chromever = "latest_compatible"
选项调用 rsDriver()
,该选项应该总是 select 正确的 Chrome驱动程序版本:
RSelenium::rsDriver(browser = "chrome",
chromever = "latest_compatible")
原回答
我 运行 使用 RSelenium::rsDriver()
的默认 chromever = "latest"
设置时遇到了同样的错误,导致尝试将 chromedriver 75.0.3770.8
与最新的 [=20] 组合失败=]:
session not created: This version of ChromeDriver only supports Chrome version 75
由于这显然是一个反复出现且非常烦人的问题,我提出了以下 解决方法以始终使用最新的兼容 Chrome 驱动程序版本 :
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"
替换为 system-specific 命令以启动 Google Chrome:
在 macOS 上用 command = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
替换 command = "google-chrome-stable"
就足够了。
On Windows a 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())
基本上,代码只是确保最新的Chrome驱动程序版本与系统稳定GoogleChrome浏览器的major-minor-patch版本号相匹配 作为 chromever
参数传递。这个程序应该遵守official ChromeDriver versioning scheme。引用:
- ChromeDriver uses the same version number scheme as Chrome (...)
- Each version of ChromeDriver supports Chrome with matching major, minor, and build version numbers. For example, ChromeDriver 73.0.3683.20 supports all Chrome versions that start with 73.0.3683.
我在 Docker 实例中使用机器人框架(基于 Selenium 的框架)时遇到了同样的错误。原因是 docker 正在为 Chrome 使用缓存的 google-chrome-stable_current_amd64.deb
但它安装了最新的 chrome 驱动程序,这是一个更高版本。
然后我使用下面的命令并解决了错误。
docker-compose build --no-cache
希望这对某人有所帮助。
我遇到了同样的错误:
session not created: This version of ChromeDriver only supports Chrome version 75
...
Driver info: driver.version: ChromeDriver
我们运行从一台没有真正 UI 的计算机上进行测试,所以我不得不通过命令行 (CLI) 工作。
我首先检测 Linux 计算机上安装的 Chrome 的当前版本:
$> google-chrome --version
并得到了这样的回应:
Google Chrome 74.0.3729.169
然后我更新了 Chrome 版本:
$> sudo apt-get install google-chrome-stable
再次检查版本后,我得到了这个:
Google Chrome 75.0.3770.100
然后 Selenium 测试能够 运行 顺利。
对于 MacOS chromedriver 升级成功了:
brew upgrade --cask chromedriver
不再需要降级 Chrome,当您收到此错误时仅表示是时候再次 运行 webdriver-manager update
特拉维斯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:
只需更新量角器:
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 驱动程序版本匹配。
我今天也遇到了同样的问题。
我的解决方案:
下载 chrome 驱动程序的最新稳定版本:https://sites.google.com/a/chromium.org/chromedriver/
更新您的 Selenium 文件夹中的 chrome 驱动程序。这有点难,因为它位于您 PC 上名为 AppData 的隐藏文件夹中。这是我在我的电脑上做的 (Windows 7):
C: > users > 你的用户 > \AppData(你需要在文件夹路径框中写这个,因为它是一个隐藏文件夹)> Local(这是葡萄牙语的文件夹名称,也许它会有一个不同的名字)> SeleniumBasic
在那里您会找到 chrome 驱动程序应用程序。只需重命名它(如果它不起作用,您想要使用旧版本)然后粘贴最新版本。
我最近遇到了同样的问题。这是我的错误:
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
我遇到了同样的问题,并通过简单地为 chrome 的先前版本下载 chromedriver
文件解决了这个问题。我发现 Chrome 的第 79 版与当前版本的 Selenium 兼容。
然后我将它保存在指定的路径中,然后 link将该路径编辑到我的 webdriver
。
具体步骤在此link中指定:
http://chromedriver.chromium.org/downloads
运行 进入这个问题并能够通过 2 个主要步骤解决:
1 - 通过自制程序 cli
更新到最新的 chrome 驱动程序
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 文件
它说 "If you are using Chrome version 79, please download ChromeDriver 79.0.3945.36"
我使用的是 Chrome 版本 79。(我检查了 chrome://settings/help
)显然,我的错误是 "This version of ChromeDriver only supports Chrome version 78"
然后我单击 zip 文件并将 "chromedriver" 文件移动到 /usr/local/bin/
目录中。那解决了问题。
$ which chromedriver
$ chromedriver --version
ChromeDriver 79.0.3945.36
我的 mac os bigsur 也有类似的问题
2021 年 mac 的正确命令是
brew upgrade --cask chromedriver
我正在尝试 运行 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 的预发布开发版本:我需要安装它才能将 ChromeDriver 与 RSelenium 一起使用吗?
我并不执着于使用 Chrome 的想法,但我无法让 rsDriver 使用 Firefox:当我指定 browser = "firefox"
时,rsDriver 给了我同样的错误有关 Chrome 驱动程序不支持我的 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
这个错误信息...
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 Browser 版本为 74.
Quick installation 最新的 Chrome 驱动程序
要安装最新版本的
- Mac 使用 Homebrew 的用户:
brew tap homebrew/cask && brew cask install chromedriver
- 基于 Debian 的 Linux 发行版:
sudo apt-get install chromium-chromedriver
- Windows 用户安装了 Chocolatey:
choco install chromedriver
分析
您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:
- 您正在使用 chromedriver=74.0.3729.6
- chromedriver=74.0.3729.6 的发行说明清楚地提到了以下内容:
Supports Chrome v74
- 您使用的是当前发布的chrome=73.0
因此 Chrome 驱动程序 v74.0.3729.6 和 Chrome 浏览器 v73.0 之间存在明显的不匹配
解决方案
- 将Chrome驱动程序降级到ChromeDriver v73.0.3683.68级别。
- 将 Chrome 版本保持在 Chrome v73 级别。 (as per ChromeDriver v73.0.3683.68 release notes)
- 通过 IDE 和 [=44] 清理 您的 项目工作区 =]重建你的项目只需要依赖。
- 如果您的基础 Web Client 版本太旧,则卸载它并安装最新的 GA 和发布版本的 Web Client。
- 执行你的
@Test
. - 始终在
tearDown(){}
方法中调用driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例.
参考
您可以在以下位置找到相关的详细讨论:
我今天遇到了同样的问题,并在 post 和 Google 中找到了其他问题。我想我可能有一个更直接的解决方案来修改您的代码。先前的答案在识别版本不匹配方面是正确的。
我尝试了建议的解决方案但无济于事。我发现我的电脑上的版本是正确的。但是,此不匹配错误不是由计算机上安装的实际版本引起的,而是 RSelenium 代码正在默认寻找 Chrome/ChromeDriver 的 "latest" 版本。有关参数,请参阅 ?rsDriver()
帮助页面。
如果您运行按照帮助文档中指定的代码binman::list_versions("chromedriver")
,那么您可以识别与该功能兼容的版本。就我而言,我能够使用以下代码建立连接。
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68", extraCapabilities = eCaps)
您应该能够使用 chromever=
参数指定您的 Chrome 版本。不过,我不得不使用最接近的版本(我的 chrome 版本是“73.0.3683.75”)。
希望对您有所帮助!
我今天处理了这个问题,升级我的 webdrivermanager 解决了这个问题(我以前的版本是 3.0.0):
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
我真的为 Chrome 驱动程序 v74.0.3729.6 和 Chrome 浏览器 v73.0 之间的这种不匹配而苦恼。我终于找到了将 Chrome 驱动程序升级到早期版本的方法,
在Chrome>关于GoogleChrome中,复制版本号,最后一组除外。例如,72.0.3626.
将该版本粘贴到此 url 的末尾并访问它。它会返回一个版本,您应该复制该版本。 https://chromedriver.storage.googleapis.com/LATEST_RELEASE_
回到命令行,运行
bundle exec chromedriver-update <copied version>
这个解决方案对我有用
- 确保您使用的是 R 3.5.3 或更高版本
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68")
将 Google Chrome 版本更新到 74 对我有用。
步骤: 1. 进入Help -> About Google Chrome -> Chrome 会自动查找更新(update Chrome to the latest version)
我遇到了几乎相同的问题,当 运行 我的 selenium 测试需要 chrome 驱动程序包到 运行 e2e 测试时,问题出现在管道内部。
My error build pipeline
问题只是因为在管道中(在我的例子中)有 chrome 版本 73,而我的 chrome 驱动程序包安装在版本 74 上。
Finally there are two simple solutions:
- Downgrade your chrome
Downgrade your chromedriver package version. in my case, cause i running inside the pipeline i need to install chromedriver before running the selenium test like displayed below.
- script: npm install chromedriver@73.0.0 --chromedriver-force-download displayName: 'Install Chrome'
特拉维斯 CI
我在 Travis 中遇到了同样的问题并通过添加解决了:
addons:
chrome: stable
到我的 .travis.yml
文件。
更新
我已经向 RSelenium 提交了 pull request,添加了 Chrome 驱动程序版本 select 我在原始答案中提出的离子逻辑。在它被合并之前(如果有的话),你可以用
安装它remotes::install_github("ropensci/RSelenium#237")
然后您可以使用新的 chromever = "latest_compatible"
选项调用 rsDriver()
,该选项应该总是 select 正确的 Chrome驱动程序版本:
RSelenium::rsDriver(browser = "chrome",
chromever = "latest_compatible")
原回答
我 运行 使用 RSelenium::rsDriver()
的默认 chromever = "latest"
设置时遇到了同样的错误,导致尝试将 chromedriver 75.0.3770.8
与最新的 [=20] 组合失败=]:
session not created: This version of ChromeDriver only supports Chrome version 75
由于这显然是一个反复出现且非常烦人的问题,我提出了以下 解决方法以始终使用最新的兼容 Chrome 驱动程序版本 :
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"
替换为 system-specific 命令以启动 Google Chrome:
在 macOS 上用
command = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
替换command = "google-chrome-stable"
就足够了。On Windows a 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())
基本上,代码只是确保最新的Chrome驱动程序版本与系统稳定GoogleChrome浏览器的major-minor-patch版本号相匹配 作为 chromever
参数传递。这个程序应该遵守official ChromeDriver versioning scheme。引用:
- ChromeDriver uses the same version number scheme as Chrome (...)
- Each version of ChromeDriver supports Chrome with matching major, minor, and build version numbers. For example, ChromeDriver 73.0.3683.20 supports all Chrome versions that start with 73.0.3683.
我在 Docker 实例中使用机器人框架(基于 Selenium 的框架)时遇到了同样的错误。原因是 docker 正在为 Chrome 使用缓存的 google-chrome-stable_current_amd64.deb
但它安装了最新的 chrome 驱动程序,这是一个更高版本。
然后我使用下面的命令并解决了错误。
docker-compose build --no-cache
希望这对某人有所帮助。
我遇到了同样的错误:
session not created: This version of ChromeDriver only supports Chrome version 75
...
Driver info: driver.version: ChromeDriver
我们运行从一台没有真正 UI 的计算机上进行测试,所以我不得不通过命令行 (CLI) 工作。
我首先检测 Linux 计算机上安装的 Chrome 的当前版本:
$> google-chrome --version
并得到了这样的回应:
Google Chrome 74.0.3729.169
然后我更新了 Chrome 版本:
$> sudo apt-get install google-chrome-stable
再次检查版本后,我得到了这个:
Google Chrome 75.0.3770.100
然后 Selenium 测试能够 运行 顺利。
对于 MacOS chromedriver 升级成功了:
brew upgrade --cask chromedriver
不再需要降级 Chrome,当您收到此错误时仅表示是时候再次 运行 webdriver-manager update
特拉维斯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:
只需更新量角器:
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 驱动程序版本匹配。
我今天也遇到了同样的问题。
我的解决方案:
下载 chrome 驱动程序的最新稳定版本:https://sites.google.com/a/chromium.org/chromedriver/
更新您的 Selenium 文件夹中的 chrome 驱动程序。这有点难,因为它位于您 PC 上名为 AppData 的隐藏文件夹中。这是我在我的电脑上做的 (Windows 7):
C: > users > 你的用户 > \AppData(你需要在文件夹路径框中写这个,因为它是一个隐藏文件夹)> Local(这是葡萄牙语的文件夹名称,也许它会有一个不同的名字)> SeleniumBasic
在那里您会找到 chrome 驱动程序应用程序。只需重命名它(如果它不起作用,您想要使用旧版本)然后粘贴最新版本。
我最近遇到了同样的问题。这是我的错误:
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
我遇到了同样的问题,并通过简单地为 chrome 的先前版本下载 chromedriver
文件解决了这个问题。我发现 Chrome 的第 79 版与当前版本的 Selenium 兼容。
然后我将它保存在指定的路径中,然后 link将该路径编辑到我的 webdriver
。
具体步骤在此link中指定: http://chromedriver.chromium.org/downloads
运行 进入这个问题并能够通过 2 个主要步骤解决:
1 - 通过自制程序 cli
更新到最新的 chrome 驱动程序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 文件
它说 "If you are using Chrome version 79, please download ChromeDriver 79.0.3945.36"
我使用的是 Chrome 版本 79。(我检查了 chrome://settings/help
)显然,我的错误是 "This version of ChromeDriver only supports Chrome version 78"
然后我单击 zip 文件并将 "chromedriver" 文件移动到 /usr/local/bin/
目录中。那解决了问题。
$ which chromedriver
$ chromedriver --version
ChromeDriver 79.0.3945.36
我的 mac os bigsur 也有类似的问题 2021 年 mac 的正确命令是
brew upgrade --cask chromedriver