Я только что столкнулся с такой же ошибкой, используя chromever = "latest"
значение по умолчанию *1002*, которое привело к неудачной попытке объединить 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"
системной командой для запуска Google Chrome:
Вкл. macOS itдолжно быть достаточно, чтобы заменить 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())
По сути, код просто гарантирует, что последняя версия ChromeDriver соответствует номеру основного и вспомогательного патчей стабильного браузера Google Chrome системы *.1038 * передается как chromever
аргумент.Эта процедура должна придерживаться официальной схемы управления версиями ChromeDriver .Цитата:
- ChromeDriver использует ту же схему номеров версий, что и Chrome (...)
- Каждая версия ChromeDriver поддерживает Chrome с соответствующими номерами основных, вспомогательных и сборочных версий.,Например, ChromeDriver 73.0.3683.20 поддерживает все версии Chrome, которые начинаются с 73.0.3683.