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의 시험판 개발자 버전입니다. RSelenium과 함께 ChromeDriver를 사용하려면이 버전을 설치해야하나요?
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
답변
오늘 같은 문제가 발생 하여이 게시물과 Google의 다른 게시물을 발견했습니다. 코드 수정으로보다 직접적인 해결책이 있다고 생각합니다. 이전 답변은 버전에서 불일치를 식별하는 것이 정확합니다.
제안 된 솔루션을 사용해 보았습니다. 컴퓨터에서 버전이 올바른 것을 발견했습니다. 그러나이 불일치 오류는 컴퓨터에 설치된 실제 버전으로 인한 것이 아니라 RSelenium 코드가 기본적으로 “최신”버전의 Chrome / ChromeDriver를 찾고 있습니다. ?rsDriver()
인수에 대해서는 도움말 페이지를 참조하십시오 .
binman::list_versions("chromedriver")
도움말 문서에 지정된대로 코드를 실행 하면 기능과 호환되는 버전을 식별 할 수 있습니다. 필자의 경우 다음 코드를 사용하여 연결을 설정할 수있었습니다.
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68", extraCapabilities = eCaps)
chromever=
인수 를 사용하여 Chrome 버전을 지정할 수 있어야합니다 . 그래도 가장 가까운 버전을 사용해야했습니다 (크롬 버전은 “73.0.3683.75”).
도움이 되었기를 바랍니다!
답변
MacOS chromedriver upgrade의 경우 트릭을 수행했습니다.
brew cask upgrade chromedriver
답변
이 오류 메시지는 …
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
- 데비안 기반 리눅스 배포판 :
sudo apt-get install chromium-chromedriver
- Chocolatey가 설치된 Windows 사용자 :
choco install chromedriver
분석
가장 큰 문제는 다음과 같이 사용중인 바이너리 버전 간의 비 호환성입니다 .
- 당신이 사용하는 chromedriver = 74.0.3729.6
- chromedriver = 74.0.3729.6 의 릴리스 정보 는 다음을 명확하게 언급합니다.
Chrome v74 지원
- 현재 출시 된 chrome = 73.0을 사용하고 있습니다.
따라서 ChromeDriver v74.0.3729.6 과 Chrome 브라우저 v73.0 간에 명확한 불일치가 있습니다.
해결책
- ChromeDriver 를 ChromeDriver v73.0.3683.68 수준으로 다운 그레이드 하십시오 .
- Chrome 버전을 Chrome v73 수준으로 유지하십시오 . ( ChromeDriver v73.0.3683.68 출시 노트 기준 )
- 청소 당신의 프로젝트 작업을 당신을 통해 IDE 및 재 구축 에만 필요 종속성이 프로젝트를.
- 기본 웹 클라이언트 버전이 너무 오래된 경우이를 제거하고 최신 GA 및 릴리스 된 버전의 Web Client를 설치하십시오 .
- 을 실행하십시오
@Test
. - 항상 메소드
driver.quit()
내에서 호출tearDown(){}
하여 WebDriver 및 웹 클라이언트 인스턴스를 정상적으로 닫고 제거하십시오 .
참고
다음에서 관련 상세 토론을 찾을 수 있습니다.
답변
Chrome 버전을 74로 업데이트하면 나에게 도움이되었습니다.
단계 :
1. 도움말로 이동-> Chrome 정보-> Chrome에서 자동으로 업데이트를 찾습니다 (Chrome을 최신 버전으로 업데이트)
답변
업데이트 된 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 드라이버 버전과 일치하는지 확인하십시오.
답변
오늘이 문제를 해결하고 webdrivermanger를 업그레이드하면 문제가 해결되었습니다 (이전 버전은 3.0.0이었습니다).
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
답변
방금 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 패키지를 사용 합니다 (사전 설치 또는 기본 R에서 다시 작성). 다른 운영 체제의 경우 command = "google-chrome-stable"
Chrome을 시작하려면 특히 시스템 별 명령으로 대체 해야합니다.
-
에 맥 OS 는 대체하기에 충분합니다
command = "google-chrome-stable"
함께command = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
. -
Windows에서 플랫폼 관련 버그로 인해 버전 번호를 얻기 위해 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 브라우저의 주요 부 패치 버전 번호와 일치하는 최신 ChromeDriver 버전 이 chromever
인수 로 전달되도록 합니다. 이 절차는 공식 ChromeDriver 버전 관리 체계를 준수해야합니다 . 인용문:
- ChromeDriver는 Chrome과 동일한 버전 번호 체계를 사용합니다 (…)
- 각 버전의 ChromeDriver는 메이저, 마이너 및 빌드 버전 번호가 일치하는 Chrome을 지원합니다. 예를 들어 ChromeDriver 73.0.3683.20은 73.0.3683으로 시작하는 모든 Chrome 버전을 지원합니다.