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
因此,ChromeDriver v74.0.3729.6和Chrome浏览器v73.0之间存在明显的不匹配
@Test
。driver.quit()
在tearDown(){}
方法内调用以优雅地关闭和销毁WebDriver和Web Client实例。Yur*_*kyi 29
对于MacOS,chromedriver升级可以解决问题:
brew cask upgrade chromedriver
Run Code Online (Sandbox Code Playgroud)
小智 19
将Google Chrome版本更新到74对我有用。
步骤: 1.转到帮助->关于Google Chrome-> Chrome将自动查找更新(将Chrome更新为最新版本)
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”)。
希望这可以帮助!
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 版本。
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驱动程序版本匹配。
我今天处理了这个问题,升级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)
归档时间: |
|
查看次数: |
139880 次 |
最近记录: |