You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Selenium项目ChromeDriver抛出SessionNotCreatedException问题

Linux Mint下Java Selenium+TestNG中ChromeDriver抛出SessionNotCreatedException问题

问题场景

在Linux Mint系统的Java Selenium项目中使用TestNG执行测试时,ChromeDriver抛出SessionNotCreatedException,提示Chrome启动异常、DevToolsActivePort文件不存在。同一台机器的虚拟机环境中运行相同代码一切正常。

当前ChromeOptions配置

static ChromeOptions getLocalChromeOptions() {
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--ignore-ssl-errors=yes");
    options.addArguments("--ignore-certificate-errors");
    options.addArguments("--disable-popup-blocking");
    options.addArguments("--start-maximized");
    options.setExperimentalOption("prefs", getChromeExperimentalOptions(LOCAL_DOWNLOADS_FOLDER));

    return options;
}

异常信息

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 Chrome has crashed.)
Build info: version: '4.1.1', revision: 'e8fcc2cecf'
System info: host: 'username-pc', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-131-generic', java.version: '11.0.15'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {browserName: chrome, goog:chromeOptions: {args: [--ignore-ssl-errors=yes, --ignore-certificate-errors, --disable-popup-blocking, --start-maximized], extensions: [], prefs: {download.default_directory: /home/usernam/Downloads, download.directory_upgrade: true, download.prompt_for_download: false, plugins.always_open_pdf_externally: true, plugins.plugins_disabled: [Chrome PDF Viewer], profile.default_content_settings.popups: 0, safebrowsing.enabled: false}}}], desiredCapabilities=Capabilities {browserName: chrome, goog:chromeOptions: {args: [--ignore-ssl-errors=yes, --ignore-certificate-errors, --disable-popup-blocking, --start-maximized], extensions: [], prefs: {download.default_directory: /home/username/Downloads, download.directory_upgrade: true, download.prompt_for_download: false, plugins.always_open_pdf_externally: true, plugins.plugins_disabled: [Chrome PDF Viewer], profile.default_content_settings.popups: 0, safebrowsing.enabled: false}}}}]

    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:84)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:62)
    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:543)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:230)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:151)
    at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:108)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:104)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:91)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:80)
    at com.company.platform.selenium.managers.ChromeDriverManager.createDriver(ChromeDriverManager.java:12)
    at com.company.platform.tests.BaseTest.setUp(BaseTest.java:55)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
    at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:62)
    at org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:385)
    at org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:321)
    at org.testng.internal.TestInvoker.runConfigMethods(TestInvoker.java:700)
    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:527)
    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:824)
    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
    at org.testng.TestRunner.privateRun(TestRunner.java:794)
    at org.testng.TestRunner.run(TestRunner.java:596)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:377)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:371)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:332)
    at org.testng.SuiteRunner.run(SuiteRunner.java:276)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1212)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1134)
    at org.testng.TestNG.runSuites(TestNG.java:1063)
    at org.testng.TestNG.run(TestNG.java:1031)
    at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)
    at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:109)

已尝试操作

将Chrome驱动从/usr/bin/google-chrome位置移走,但问题依旧存在。

解决方案

1. 添加关键Chrome启动参数

DevToolsActivePort问题通常是因为Chrome无法正常启动调试端口,添加以下参数可解决:

  • --no-sandbox:禁用沙箱模式,Linux下非root用户运行Chrome时常用
  • --disable-dev-shm-usage:避免/dev/shm内存不足导致Chrome崩溃
  • --remote-debugging-port=9222:指定固定调试端口,确保DevTools能正常连接

修改后的ChromeOptions配置:

static ChromeOptions getLocalChromeOptions() {
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--ignore-ssl-errors=yes");
    options.addArguments("--ignore-certificate-errors");
    options.addArguments("--disable-popup-blocking");
    options.addArguments("--start-maximized");
    // 添加解决DevToolsActivePort问题的参数
    options.addArguments("--no-sandbox");
    options.addArguments("--disable-dev-shm-usage");
    options.addArguments("--remote-debugging-port=9222");
    options.setExperimentalOption("prefs", getChromeExperimentalOptions(LOCAL_DOWNLOADS_FOLDER));

    return options;
}

2. 检查Chrome与ChromeDriver版本匹配

Selenium 4.1.1需要对应版本的ChromeDriver,确保本地安装的Chrome浏览器版本与ChromeDriver版本完全一致。可通过以下命令查看版本:

  • Chrome版本:google-chrome --version
  • ChromeDriver版本:chromedriver --version

3. 清理残留进程

若有未关闭的Chrome或ChromeDriver进程残留,会导致端口占用或文件锁定,执行以下命令清理:

pkill chrome
pkill chromedriver

4. 无桌面环境下启用无头模式

如果是在无图形界面的环境中运行测试,需添加无头模式参数:

options.addArguments("--headless=new"); // Selenium 4+推荐的无头模式

内容的提问来源于stack exchange,提问作者Vo_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:15:41