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_
相关产品推荐
相关产品推荐

