Почему тот же код, который работает в Windows, не работает в CentOS 7?

По сути, у меня есть java-программа, которая получает данные с веб-сайтов с помощью Selenium (Chromedriver).

Эта же java-программа работает без ошибок на windows, при этом у меня ошибок не было. В CentOS 7 это работает, но выдает несколько ошибок и это странно.

Ошибки:

Exception in thread "Thread-6" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code                                  500. Message: unknown error: Chrome failed to start: exited abnormally.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that C                                 hrome has crashed.)
Host info: host: 'instance-20221128-2304', ip: '10.0.0.105'
Build info: version: '4.6.0', revision: '79f1c02ae20'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-1160.76.1.el7.x86_64', java.version: '1.8.0_352'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {browserName: chrome, goog:chromeOptions: {args: [--headless], exten                                 sions: []}}], desiredCapabilities=Capabilities {browserName: chrome, goog:chromeOptions: {args: [--headless], extensions: [                                 ]}}}]
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:146)
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:101)
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:67)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:156)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:167)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:142)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:541)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:242)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:157)
        at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:101)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:81)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:70)
        at org.hinoob.bot.BangerFM.fetch(BangerFM.java:55)
        at org.hinoob.bot.BangerFM.lambda$startLoop$0(BangerFM.java:26)
        at java.lang.Thread.run(Thread.java:750)`

Я следовал этому руководству, чтобы установить вещи: https://www.usessionbuddy.com/post/How-To-Install-Selenium-Chrome-On-Centos-7/

Моя версия Google Chrome в CentOS: Гугл Хром 107.0.5304.121

Я еще ничего не пробовал, так как не знаю, что попробовать. Я ожидал, что это будет работать так же, как в Windows.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Селен 4.6.0 выпущен! selenium Представляем Selenium Manager Теперь вам не нужно добавлять путь к драйверу или что-то еще. Теперь селен автоматически обновляет драйвер.

В вашем случае я предполагаю, что эта проблема связана с проблемами совместимости драйверов Chrome.

Обновите версию селена. Если это проект maven, добавьте следующую зависимость

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.6.0</version>
</dependency>

А затем удалите системное свойство, если вы добавили путь к chromedriver вручную. Надеюсь, ваша проблема будет решена.

Еще одна контрольная точка, которая вызывает проблемы с открытым браузером

  1. Убедитесь, что Chrome установлен на сервере/ПК.
  2. Если сервер безголовый, добавьте аргумент --headless
  3. Добавить аргумент отключения графического процессора

Ссылка https://www.selenium.dev/blog/2022/introduction-selenium-manager/

Другие вопросы по теме