我正在尝试使用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
答案 0 :(得分:38)
对于MacOS chromedriver升级可以达到目的:
public Object curl(String url, Object postData, String method) {
CurlLib curl = CurlFactory.getInstance("default");
ch = curl.curl_init();
curl.curl_setopt(ch, CurlOption.CURLOPT_CONNECTTIMEOUT, 1000);
curl.curl_setopt(ch, CurlOption.CURLOPT_TIMEOUT, 5000);
curl.curl_setopt(ch, CurlOption.CURLOPT_SSL_VERIFYPEER, false);
curl.curl_setopt(ch, CurlOption.CURLOPT_SSL_VERIFYHOST, false);
String postDataStr = "key1=v1";
curl.curl_setopt(ch, CurlOption.CURLOPT_CUSTOMREQUEST, "POST");
curl.curl_setopt(ch, CurlOption.CURLOPT_POSTFIELDS, postDataStr);
curl.curl_setopt(ch, CurlOption.CURLOPT_URL, "https://xxxx.com/yyy");
Object html = curl.curl_exec(ch);
Object httpCode = curl.curl_getinfo(ch, CurlInfo.CURLINFO_HTTP_CODE);
if (httpCode != null && 200 == Integer.valueOf(httpCode.toString())) {
return null;
}
return html;
}
答案 1 :(得分:19)
此错误消息...
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 。
您的主要问题是所使用的二进制版本之间的不兼容性:
支持 Chrome v74
因此 ChromeDriver v74.0.3729.6 与 Chrome浏览器v73.0
之间存在明显的不匹配@Test
。driver.quit()
方法内调用tearDown(){}
,以优雅地关闭和销毁 WebDriver 和 Web Client 实例。答案 2 :(得分:14)
我必须重新安装量角器才能拉出更新的webdriver-manager
模块。另外,根据@Mark的评论,package-lock.json
可能正在锁定依赖项。
npm uninstall protractor
npm install --save-dev protractor
然后,请确保在重新安装后检查maxChromedriver
中的node_modules/protractor/node_modules/webdriver-manager/config.json
值,以确保它与所需的Chrome驱动程序版本匹配。
答案 3 :(得分:9)
将 Google Chrome 版本更新为 74 对我有用。
步骤: 1.转到帮助->关于Google Chrome-> Chrome将自动查找更新(将Chrome更新到最新版本)
答案 4 :(得分:7)
I encountered the same issue today and found this post and others from Google. I think I may have a more direct solution as a modification of your code. The previous answer is correct in identifying the mismatch in versions.
I tried the proposed solutions to no avail. I found that the versions were correct on my computer. However, this mismatch error was not resulting from the actual versions installed on the computer, but rather the RSelenium code is seeking the "latest" version of Chrome/ChromeDriver by default argument. See ?rsDriver()
help page for the arguments.
If you run the code binman::list_versions("chromedriver")
as specified in the help documentation, then you can identify the versions of compatible with the function. In my case, I was able to use the following code to establish a connection.
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68", extraCapabilities = eCaps)
You should be able to specify your version of Chrome with the chromever=
argument. I had to use the closest version, though (my chrome version was "73.0.3683.75").
Hope this helps!
答案 5 :(得分:4)
只需在chrome浏览器中转到该网址
chrome://settings/help
Chrome会自动查找更新(将Chrome更新到最新版本)
完成:)
答案 6 :(得分:3)
我今天处理了这个问题,升级webdrivermanger为我解决了它(我的先前版本是3.0.0):
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
答案 7 :(得分:3)
$ 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
答案 8 :(得分:2)
遇到了这个问题,并可以通过两个主要步骤来解决:
brew cask upgrade chromedriver
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)
答案 9 :(得分:2)
我在Travis中遇到了同样的问题,并通过添加以下内容解决了该问题:
addons:
chrome: stable
到我的.travis.yml
文件。
答案 10 :(得分:2)
自弗朗切斯科·博齐(Francesco Borzi)的工作以来,这对我来说是另一个答案。
将此添加到您的travis.yml: 非常感谢和感谢github上的tagliala: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
答案 11 :(得分:1)
只需更新量角器:
npm install protractor @ latest --save-dev
答案 12 :(得分:1)
您无需再降级Chrome,当您收到此错误时,仅意味着是时候再次运行webdriver-manager update
答案 13 :(得分:1)
在 Docker 实例中使用机器人框架(基于硒的框架)时,我遇到了相同的错误。原因是docker在Chrome上使用了缓存的google-chrome-stable_current_amd64.deb
,但它安装了最新的chrome驱动程序,该驱动程序是更高版本。
然后我在下面的命令中使用并解决了错误。
docker-compose build --no-cache
希望这对某人有帮助。
答案 14 :(得分:1)
我只是在使用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())
基本上,该代码只是确保将与系统稳定Google Chrome浏览器的主要次要补丁版本号匹配的最新ChromeDriver版本 作为chromever
参数进行传递。此过程应遵循official ChromeDriver versioning scheme。引用:
- ChromeDriver使用与Chrome(...)相同的版本号方案
- 每个版本的ChromeDriver支持具有匹配的主要,次要和内部版本号的Chrome。例如,ChromeDriver 73.0.3683.20支持所有以73.0.3683开头的Chrome版本。
答案 15 :(得分:1)
我遇到了同样的错误:
未创建会话:此版本的ChromeDriver仅支持Chrome版本75
...
驱动程序信息: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
然后,硒测试能够顺利进行。
答案 16 :(得分:1)
此解决方案对我有用
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68")
答案 17 :(得分:0)
我的 mac os bigsur 也有类似的问题 2021 年,在 mac 上正确的命令是 brew upgrade --cask chromedriver 它解决了问题
答案 18 :(得分:0)
我检查了安装在PC上的Google chrome浏览器的版本,然后下载了适合我的浏览器版本的ChromeDriver
。您可以从https://chromedriver.chromium.org/
答案 19 :(得分:0)
要下载Google chrome版本,请访问= chromedriver.chromium.org网站
答案 20 :(得分:0)
我有类似的问题,只是在Mac上更新了webdriver manager,在终端中使用它来更新webdriver manager-
sudo webdriver-manager update
答案 21 :(得分:0)
我真的为ChromeDriver v74.0.3729.6和Chrome浏览器v73.0之间的不匹配而苦苦挣扎。我终于找到了一种将ChromeDriver升级到较早版本的方法,
在Chrome>关于Google Chrome中,复制版本号(最后一组除外)。例如72.0.3626。
在该网址末尾粘贴该版本并访问它。它将返回一个版本,您应该复制该版本。 https://chromedriver.storage.googleapis.com/LATEST_RELEASE_
返回命令行,运行bundle exec chromedriver-update <copied version>
答案 22 :(得分:0)
它对Linux用户很有用。我的问题微不足道,我使用了铬浏览器。我安装了chrome,所有问题均已解决。它可以与铬一起使用,但需要额外的操作。我没有获得成功。我可以将需要的驱动程序版本设置为量角器配置。它使用了最新的。我需要降级。
答案 23 :(得分:0)
我遇到了同样的问题,只需为先前版本的chrome下载一个chromedriver
文件即可解决此问题。我发现Chrome的79版本与当前的Selenium版本兼容。
然后我将其保存在指定的路径中,并将该路径链接到我的webdriver
。
在此链接中指定了确切步骤: http://chromedriver.chromium.org/downloads
答案 24 :(得分:0)
确保您具有最新版本的webdriver-manager。您可以使用npm i webdriver-manager@latest --save
然后运行以下
command.webdriver-manager update
答案 25 :(得分:0)
您可以像这样指定您的Chrome安装的确切版本:
webdriver-manager update --versions.chrome 73.0.3683.75
在降级的情况下,也许您需要先执行webdriver-manager clean
。
答案 26 :(得分:0)
我最近遇到了同样的问题。这是我的错误:
System.InvalidOperationException : session not created: This version of ChromeDriver only supports Chrome version 76 (SessionNotCreated)
此修复程序对我有用:
[project_folder]\bin\Debug\netcoreapp2.1
)答案 27 :(得分:0)
今天我也遇到了同样的问题。
我的解决方案:
下载chromedriver的最新稳定版本:https://sites.google.com/a/chromium.org/chromedriver/
更新Selenium文件夹中的chrome驱动程序。这有点困难,因为它位于PC上一个名为AppData的隐藏文件夹中。这是我在计算机(Windows 7)中的操作方式:
C:>用户>您的用户> \ AppData(由于它是一个隐藏文件夹,因此您需要在文件夹路径框中输入它)> Local(这是葡萄牙语的文件夹名称,也许它将具有不同的名称)给你)> SeleniumBasic
您将在其中找到chromedriver应用程序。只需重命名它(以防万一它不起作用,您要使用旧版本),然后粘贴最新版本。
答案 28 :(得分:0)
在使用Visual Studio时,我无法通过遵循任何答案来解决版本不匹配的问题,而只是将Selenium.WebDriver和Selenium.WebDriver.ChromeDriver nuget软件包更新为最新版本即可。
我正在使用Chrome v78,并且将chromedriver升级到v78仍然出现不兼容错误。 CAD的回答使我找到了解决方案。
答案 29 :(得分:0)
我遇到了几乎相同的问题,问题出在运行硒测试时管道内部,需要chromedriver软件包才能运行e2e测试。
问题仅仅是因为(在我的情况下)管道中的Chrome版本为73,而我的chromedriver软件包安装在版本74中。
最后有两个简单的解决方案:
- 降级您的Chrome浏览器
降级您的chromedriver软件包版本。就我而言,因为我在管道中运行,所以我需要先安装chromedriver 运行如下所示的硒测试。
- script: npm install chromedriver@73.0.0 --chromedriver-force-download displayName: 'Install Chrome'