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

Mac BigSur环境下Selenium Java ChromeDriver无法打开指定URL的问题求助

解决ChromeDriver启动Session失败(DevToolsActivePort不存在)的问题

我来帮你排查这个问题,你遇到的SessionNotCreatedException核心原因是ChromeDriver无法与Chrome浏览器建立稳定的会话,报错里的unknown error: DevToolsActivePort file doesn't exist和Chrome failed to start: was killed是关键线索。结合你的环境和代码,我整理了几个针对性的解决方案:

1. 清理重复且冲突的启动参数

你的代码里存在重复的启动参数,这可能干扰Chrome的启动逻辑:

  • 既调用了chromeOptions.setHeadless(true);,又在arguments里添加了--headless
  • 重复添加了两次--no-sandbox

建议清理后保持参数唯一:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(true); // 用这个方法设置无头模式即可,无需重复加--headless参数
List<String> arguments = new LinkedList<>();
arguments.add("--disable-extensions");
arguments.add("--disable-gpu");
arguments.add("--no-sandbox"); // 只保留一次
arguments.add("--incognito");
arguments.add("--disable-application-cache");
arguments.add("--disable-dev-shm-usage");
chromeOptions.addArguments(arguments);

2. 确保ChromeDriver与Chrome版本完全匹配

你的Chrome浏览器版本是99.0.4844.74,但ChromeDriver版本是99.0.4844.5,版本号末尾不一致会导致兼容性问题。ChromeDriver的版本必须和Chrome浏览器的主版本+次版本完全对应。

更省心的方式是使用你已经引入的webdrivermanager依赖,它会自动下载匹配的ChromeDriver,无需手动设置System.setProperty。删掉代码里的这一行:

System.setProperty("webdriver.chrome.driver", "/usr/local/Caskroom/chromedriver/99.0.4844.51/chromedriver");

同时建议升级webdrivermanager的版本到5.x(你注释的5.1.0就很好),因为3.7.1版本相对较老,和Selenium 4.1.2的兼容性更好:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.1.0</version>
</dependency>

3. 添加Mac BigSur无头模式专属参数

在Mac BigSur环境下运行无头Chrome,需要额外添加几个参数来避免DevTools端口问题,建议补充:

arguments.add("--remote-debugging-port=9222"); // 指定调试端口,避免端口冲突
arguments.add("--window-size=1920,1080"); // 设置窗口尺寸,无头模式默认尺寸可能导致异常
arguments.add("--user-data-dir=/tmp/chrome-user-data"); // 指定临时用户数据目录,避免权限问题

4. 修复空指针风险

你的代码中如果ChromeDriver初始化失败,后续的driver.get(URL)会抛出空指针异常,建议增加非空判断:

try {
    driver = new ChromeDriver(chromeOptions);
    if (driver != null) {
        driver.get(URL);
        // 后续操作...
    }
} catch(Exception e) {
    e.printStackTrace();
}

修改后的完整代码示例

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;
import java.util.LinkedList;
import java.util.List;

public class Launch_Chrome {
    public static void main(String[] args) {
        WebDriver driver = null;
        String URL = "https://www.google.com";
        
        // 让WebDriverManager自动管理ChromeDriver版本
        WebDriverManager.chromedriver().setup();
        
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setHeadless(true);
        List<String> arguments = new LinkedList<>();
        arguments.add("--disable-extensions");
        arguments.add("--disable-gpu");
        arguments.add("--no-sandbox");
        arguments.add("--incognito");
        arguments.add("--disable-application-cache");
        arguments.add("--disable-dev-shm-usage");
        arguments.add("--remote-debugging-port=9222");
        arguments.add("--window-size=1920,1080");
        arguments.add("--user-data-dir=/tmp/chrome-user-data");
        chromeOptions.addArguments(arguments);
        
        try {
            driver = new ChromeDriver(chromeOptions);
            if (driver != null) {
                driver.get(URL);
                System.out.println("页面标题:" + driver.getTitle());
                // 记得最后关闭driver
                driver.quit();
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:12:33