сеанс не создан: эта версия ChromeDriver поддерживает только ошибку Chrome версии 74 с ChromeDriver Chrome с использованием 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/[email protected]{#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). При дальнейшем поиске в Google 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
Ответы
Ответ 1
Это сообщение об ошибке...
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/[email protected]{#29}),platform=Mac OS X 10.14.3 x86_64)
... подразумевает, что ChromeDriver ожидает, что версия браузера Chrome будет 74.
Ваша основная проблема заключается в несовместимости используемой версии двоичных файлов:
Поддерживает Chrome v74
- Вы используете текущий выпущенный Chrome = 73,0
Таким образом, существует явное несоответствие между ChromeDriver v74.0.3729.6 и Chrome Browser v73.0
Решение
- Понизьте ChromeDriver до уровня ChromeDriver v73.0.3683.68.
- Сохранить версию Chrome на уровне Chrome v73. (согласно примечаниям к выпуску ChromeDriver v73.0.3683.68)
- Очистите рабочее пространство проекта через IDE и перестройте проект только с необходимыми зависимостями.
- Если ваша базовая версия веб-клиента устарела, удалите ее и установите последнюю версию GA и выпущенную версию веб-клиента.
- Выполните свой
@Test
. - Всегда
driver.quit()
в tearDown(){}
чтобы изящно закрыть и уничтожить экземпляры WebDriver и Web Client.
Ответ 2
Для MacOS обновление с помощью цветного драйвера сделало свое дело:
brew cask upgrade chromedriver
Ответ 3
Обновление версии Google Chrome до 74 работало для меня.
Шаги: 1. Перейдите в Справка → О Google Chrome → Chrome автоматически выполнит поиск обновлений (обновите Chrome до последней версии)
Ответ 4
Я столкнулся с той же проблемой сегодня и нашел этот пост и другие от Google. Я думаю, что у меня может быть более прямое решение, как модификация вашего кода. Предыдущий ответ верен при выявлении несоответствия в версиях.
Я попробовал предложенные решения безрезультатно. Я обнаружил, что версии были правильными на моем компьютере. Однако эта ошибка несоответствия была вызвана не фактическими версиями, установленными на компьютере, а кодом RSelenium, который ищет "последнюю" версию Chrome/ChromeDriver по умолчанию. Смотрите ?rsDriver()
справочную страницу для аргументов.
Если вы запустите код binman::list_versions("chromedriver")
как указано в справочной документации, вы сможете определить версии, совместимые с этой функцией. В моем случае я смог использовать следующий код для установления соединения.
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68", extraCapabilities = eCaps)
Вы должны быть в состоянии указать свою версию Chrome с аргументом chromever=
. Я должен был использовать самую близкую версию (моя версия Chrome была "73.0.3683.75").
Надеюсь это поможет!
Ответ 5
Я справился с этой проблемой сегодня, и обновление моего webdrivermanger решило ее для меня (моя предыдущая версия была 3.0.0):
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
Ответ 6
Трэвис CI
У меня была такая же проблема в Трэвисе, и я решил:
addons:
chrome: stable
в мой файл .travis.yml
.
Ответ 7
Я просто столкнулся с той же самой ошибкой, используя RSelenium::rsDriver()
default chromever = "latest"
что привело к неудачной попытке объединить chromedriver 75.0.3770.8
с последней 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 ошибка, связанная с платформой, не позволяет нам напрямую вызывать двоичный код 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, совпадающая с номером версии major-minor-patch, стабильного браузера Google Chrome, будет передана в chromever
аргумента chromever
. Эта процедура должна придерживаться официальной схемы управления версиями ChromeDriver. Цитата:
- ChromeDriver использует ту же схему номеров версий, что и Chrome (...)
- Каждая версия ChromeDriver поддерживает Chrome с соответствующими номерами основных, вспомогательных и сборочных версий. Например, ChromeDriver 73.0.3683.20 поддерживает все версии Chrome, которые начинаются с 73.0.3683.
Ответ 8
Travis CI альтернатива
Еще один ответ, так как Франческо Борзи не работал для меня.
Добавьте это в свой 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
Большое спасибо и благодарность tagliala на github:
https://github.com/diowa/ruby2-rails5-bootstrap-heroku/commit/6ba95f33f922895090d3fabc140816db67b09672
Ответ 9
Я действительно боролся с этим несоответствием между ChromeDriver v74.0.3729.6 и Chrome Browser v73.0. Наконец-то я нашел способ получить ChromeDriver к более ранней версии,
-
В Chrome> О Google Chrome скопируйте номер версии, кроме последней группы. Например, 72.0.3626.
-
Вставьте эту версию в конце этого URL и посетите его. Он вернется с версией, которую вы должны скопировать. https://chromedriver.storage.googleapis.com/LATEST_RELEASE_
-
Вернувшись в командную строку, запустите bundle exec chromedriver-update <copied version>
Ответ 10
Это решение сработало для меня
- Убедитесь, что вы используете R 3.5.3 или выше
-
driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68")
Ответ 11
Я получил ту же ошибку, когда я использую каркас робота (каркас на основе Selenium) в экземпляре Docker. Причина была в том, что докер использовал кешированный google-chrome-stable_current_amd64.deb
для Chrome, но он установил последний драйвер chrome, который был более поздней версией.
Затем я использовал приведенную ниже команду и ошибка устранена.
docker-compose build --no-cache
Надеюсь, это кому-нибудь поможет.
Ответ 12
Я столкнулся с той же ошибкой:
сеанс не создан: эта версия ChromeDriver поддерживает только Chrome версии 75
...
Информация о драйвере: driver.version: ChromeDriver
Мы запускаем тесты с компьютера, на котором нет реального пользовательского интерфейса, поэтому мне пришлось работать через командную строку (CLI).
Я начал с определения текущей версии Chrome, которая была установлена на компьютере с Linux:
$> google-chrome --version
И получил этот ответ:
Google Chrome 74.0.3729.169
Итак, я обновил версию Chrome следующим образом:
$> sudo apt-get install google-chrome-stable
И после проверки версии я получил это:
Google Chrome 75.0.3770.100
Тогда тесты Selenium смогли пройти гладко.
Ответ 13
Больше нет необходимости понижать версию Chrome, когда вы получаете эту ошибку, это означает, что пришло время снова запустить webdriver-manager update
Ответ 14
Просто обновите транспортир:
npm установить транспортир @последний --save-dev
Ответ 15
Это полезно для людей Linux. Моя проблема была тривиальной, я использовал хром-браузер. Я установил хром и все проблемы были решены. Это может работать с хромом, но с дополнительными действиями. Я не получил успех. Я мог бы установить нужную версию драйвера для конфигурации транспортира. Он использовал последние. Мне нужно было понизить рейтинг.
Ответ 16
У меня почти такие же проблемы, как эта, проблемы возникают внутри конвейера, когда я запускаю тест на селен, которому нужен пакет chromedriver для запуска теста e2e.
Моя ошибка сборки конвейера
Проблема только в том, что в конвейере (в моем случае) установлена версия chrome 73, а мой пакет chromedriver установлен в версии 74.
Наконец, есть два простых решения:
- Понизь свой хром
-
Понизьте версию своего пакета chromedriver. в моем случае, потому что я работаю внутри конвейера, мне нужно установить chromedriver перед запуском теста на селен, как показано ниже.
- script: npm install [email protected] --chromedriver-force-download displayName: 'Install Chrome'
Ответ 17
Загрузите эту старую версию. Работает отлично!
---> https://chromedriver.storage.googleapis.com/index.html?path=2.46/
Ответ 18
Мне пришлось переустановить транспортир, чтобы вытащить обновленный модуль webdriver-manager
:
npm uninstall protractor
npm install --save-dev protractor
Обязательно проверьте значение maxChromedriver
в node_modules/protractor/node_modules/webdriver-manager/config.json
после переустановки, чтобы убедиться, что оно соответствует требуемой версии драйвера Chrome.