SessionNotCreatedException: Не удалось начать новый сеанс. Код ответа 500 с использованием ChromeDriver на Apache Tomcat/10.0.23 на удаленном сервере

Я запускаю java-веб-приложение в Apache Tomcat/10.0.23 на удаленном сервере, который реализует selenium chromedriver. Всякий раз, когда я создаю веб-драйвер, он возвращает статус HTTP 500 — внутренняя ошибка сервера.

Расположение гугл-хрома:

/usr/bin/google-chrome /usr/share/man/man1/google-chrome.1.gz 

Гугл-хром версия:

110.0.5481.77

Расположение хромдрайвера:

/usr/bin/chromedriver 

Версия хромдрайвера:

110.0.5481.77 (65ed616c6e8ee3fe0ad64fe83796c020644d42af-refs/branch-heads/5481@{#839})

Селен

<dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-java</artifactId>
       <version>4.8.0</version>
</dependency>

Ошибка:

<body>
    <h1>HTTP Status 500 – Internal Server Error</h1>
    <hr class = "line" />
    <p><b>Type</b> Exception Report</p>
    <p><b>Message</b> Could not start a new session. Response code 500. Message: unknown error: Chrome failed to start:
        crashed.</p>
    <p><b>Description</b> The server encountered an unexpected condition that prevented it from fulfilling the request.
    </p>
    <p><b>Exception</b></p>
    <pre>org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: unknown error: Chrome failed to start: crashed.
  (unknown error: DevToolsActivePort file doesn&#39;t exist)
  (The process started from chrome location &#47;usr&#47;bin&#47;google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.) 
Host info: host: &#39;ip-xxxxxxxxxx2&#39;, ip: &#39;127.0.0.1&#39;
Build info: version: &#39;4.8.0&#39;, revision: &#39;267030adea&#39;
System info: os.name: &#39;Linux&#39;, os.arch: &#39;amd64&#39;, os.version: &#39;5.10.0-21-cloud-amd64&#39;, java.version: &#39;11.0.15.1&#39;
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {browserName: chrome, goog:chromeOptions: {args: [--headless=new, --disable-dev-shm-usage, --no-sandbox], extensions: []}, pageLoadStrategy: eager}], desiredCapabilities=Capabilities {browserName: chrome, goog:chromeOptions: {args: [--headless=new, --disable-dev-shm-usage, --no-sandbox], extensions: []}, pageLoadStrategy: eager}}]
    org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:148)
    org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:106)
    org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:67)
    org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:156)
    org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:167)
    org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:142)
    org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
    org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:229)
    org.openqa.selenium.remote.RemoteWebDriver.&lt;init&gt;(RemoteWebDriver.java:157)
    org.openqa.selenium.chromium.ChromiumDriver.&lt;init&gt;(ChromiumDriver.java:101)
    org.openqa.selenium.chrome.ChromeDriver.&lt;init&gt;(ChromeDriver.java:82)
    org.openqa.selenium.chrome.ChromeDriver.&lt;init&gt;(ChromeDriver.java:71)
    com.fourdcontrols.servlets.TestServlet.doGet(TestServlet.java:29)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:668)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
</pre>
    <p><b>Note</b> The full stack trace of the root cause is available in the server logs.</p>
    <hr class = "line" />
    <h3>Apache Tomcat/10.0.23</h3>
</body>

Журналы:

Starting ChromeDriver 110.0.5481.77 (65ed616c6e8ee3fe0ad64fe83796c020644d42af-refs/branch-heads/5481@{#839}) on port 3125
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

Используя пользователя root, верно?

undetected Selenium 15.02.2023 01:00

Я так думаю, это на экземпляре EC2 с изображением Bitnami.

Stewart LloydJones 15.02.2023 01:06
Типы данных JavaScript
Типы данных JavaScript
В JavaScript существует несколько типов данных, включая примитивные типы данных и ссылочные типы данных. Вот краткое объяснение различных типов данных...
Как сделать движок для футбольного матча? (простой вариант)
Как сделать движок для футбольного матча? (простой вариант)
Футбол. Для многих людей, живущих на земле, эта игра - больше, чем просто спорт. И эти люди всегда мечтают стать футболистом или менеджером. Но, к...
Знайте свои исключения!
Знайте свои исключения!
В Java исключение - это событие, возникающее во время выполнения программы, которое нарушает нормальный ход выполнения инструкций программы. Когда...
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик Модуль flexbox, также известный как гибкий модуль разметки box, помогает эффективно проектировать и...
Введение в раздел &quot;Заголовок&quot; в HTML
Введение в раздел "Заголовок" в HTML
Говорят, что лучшее о человеке можно увидеть только изнутри, и это относится и к веб-страницам HTML! Причина, по которой некоторые веб-страницы не...
2
2
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Правило большого пальца

Распространенной причиной сбоя Chrome при запуске является запуск Chrome от имени пользователя root (administrator) в Linux. Хотя эту проблему можно обойти, передав флаг --no-sandbox при создании сеанса WebDriver, такая конфигурация не поддерживается и крайне не рекомендуется. Вам нужно настроить среду для запуска Chrome в качестве обычного пользователя.

Рекомендации

Вы можете найти пару соответствующих подробных обсуждений и документации в:

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