сеанс не создан: эта версия ChromeDriver поддерживает только ошибку Chrome версии 74 с ChromeDriver Chrome с использованием Selenium - PullRequest
46 голосов
/ 16 марта 2019

Я пытаюсь запустить 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/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). При дальнейшем поиске в 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

Ответы [ 12 ]

21 голосов
/ 16 марта 2019

Это сообщение об ошибке ...

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 Browser будет 74 .

Ваша главная проблема - несовместимость между версиями двоичных файлов, которые вы используете, следующим образом:

  • Вы используете chromedriver = 74.0.3729.6
  • Примечания к выпуску chromedriver = 74.0.3729.6 четко упоминают следующее:

Поддержка Chrome v74

  • Вы используете текущую версию chrome = 73.0

Таким образом, существует явное несоответствие между ChromeDriver v74.0.3729.6 и Chrome Browser v73.0


Решение

  • Понижение ChromeDriver до ChromeDriver v73.0.3683.68 уровень.
  • Keep Chrome версия на уровне Chrome v73 . ( в соответствии с примечаниями к выпуску ChromeDriver v73.0.3683.68 )
  • Очистите ваше Рабочее пространство проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • Если ваша базовая версия Web Client устарела, удалите ее и установите последнюю версию GA и выпущенную версию Web Client .
  • Выполните ваши @Test.
  • Всегда вызывайте driver.quit() в методе tearDown(){} для закрытия и уничтожения WebDriver и Веб-клиента экземпляров изящно.
10 голосов
/ 18 марта 2019

Я столкнулся с той же проблемой сегодня и нашел этот пост и другие от 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").

Надеюсь, это поможет!

9 голосов
/ 01 мая 2019

Обновление версии Google Chrome до 74 мне помогло.

Шаги: 1. Перейдите в Справка -> О Google Chrome-> Chrome будет автоматически искать обновления (обновить Chrome до последней версии)

enter image description here

4 голосов
/ 18 марта 2019

Я имел дело с этой проблемой сегодня, и обновление моего webdrivermanger решило ее для меня (Моя предыдущая версия была 3.0.0):

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>3.3.0</version>
    <scope>test</scope>
</dependency>
3 голосов
/ 16 мая 2019

Я только что столкнулся с такой же ошибкой, используя 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.
2 голосов
/ 15 мая 2019

У меня возникла та же проблема в Travis, и я решил добавить:

addons:
  chrome: stable

в мой файл .travis.yml.

1 голос
/ 26 июня 2019

Я столкнулся с той же ошибкой:

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

1 голос
/ 11 июня 2019

Я получаю ту же ошибку, когда использую каркас робота (каркас на основе Selenium) в экземпляре Docker . Причина была в том, что докер использовал кэшированный google-chrome-stable_current_amd64.deb для Chrome, но он установил последнюю версию драйвера chrome, которая была более поздней версии.

Тогда я использовал приведенную ниже команду и ошибка устранена.

docker-compose build --no-cache

Надеюсь, это кому-нибудь поможет.

1 голос
/ 02 апреля 2019

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

  1. Убедитесь, что вы используете R 3.5.3 или выше
  2. driver <- rsDriver(browser=c("chrome"), chromever="73.0.3683.68")
1 голос
/ 20 марта 2019

Я действительно боролся с этим несоответствием между 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>

...