сеанс не создан: эта версия 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 до последней версии)

enter image description here

Ответ 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 к более ранней версии,

  1. В Chrome> О Google Chrome скопируйте номер версии, кроме последней группы. Например, 72.0.3626.

  2. Вставьте эту версию в конце этого URL и посетите его. Он вернется с версией, которую вы должны скопировать. https://chromedriver.storage.googleapis.com/LATEST_RELEASE_

  3. Вернувшись в командную строку, запустите bundle exec chromedriver-update <copied version>

Ответ 10

Это решение сработало для меня

  1. Убедитесь, что вы используете R 3.5.3 или выше
  2. 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.

Наконец, есть два простых решения:

  1. Понизь свой хром
  2. Понизьте версию своего пакета chromedriver. в моем случае, потому что я работаю внутри конвейера, мне нужно установить chromedriver перед запуском теста на селен, как показано ниже.

    - script: npm install [email protected] --chromedriver-force-download displayName: 'Install Chrome'

Ответ 18

Мне пришлось переустановить транспортир, чтобы вытащить обновленный модуль webdriver-manager:

npm uninstall protractor
npm install --save-dev protractor

Обязательно проверьте значение maxChromedriver в node_modules/protractor/node_modules/webdriver-manager/config.json после переустановки, чтобы убедиться, что оно соответствует требуемой версии драйвера Chrome.