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

Ubuntu 20.04下Selenium ChromeDriver启动会话失败(响应码500)求助

问题解决:Ubuntu 20.04 下 Selenium Chrome DevToolsActivePort 异常退出问题

核心原因与解决步骤

1. 禁用沙箱与共享内存限制

虚拟机环境中Chrome默认沙箱机制会导致启动失败,同时/dev/shm分区过小也会引发异常。需在ChromeOptions中添加以下参数:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class CrawlerTest {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "/path/to/your/chromedriver");
        
        ChromeOptions options = new ChromeOptions();
        // 解决虚拟机沙箱限制
        options.addArguments("--no-sandbox");
        // 规避共享内存不足问题
        options.addArguments("--disable-dev-shm-usage");
        // 若使用无头模式,Chrome 112+推荐使用新参数
        options.addArguments("--headless=new");
        
        WebDriver driver = new ChromeDriver(options);
        try {
            driver.get("https://example.com");
            System.out.println(driver.getTitle());
        } finally {
            driver.quit();
        }
    }
}

2. 手动指定用户数据目录

Chrome无法自动生成临时用户目录时会触发该错误,可手动指定一个有读写权限的目录:

options.addArguments("--user-data-dir=/tmp/chrome-temp-profile");

提前创建并授权目录:

mkdir -p /tmp/chrome-temp-profile && chmod 777 /tmp/chrome-temp-profile

3. 检查文件权限

确保ChromeDriver和Chrome二进制文件具备可执行权限:

chmod +x /path/to/your/chromedriver
chmod +x /usr/bin/google-chrome # 路径根据实际安装位置调整

4. 明确指定Chrome二进制路径

若Chrome不在系统PATH中,直接在代码中指定路径:

options.setBinary("/usr/bin/google-chrome");

错误日志对应分析

SessionNotCreatedException: Message: session not created: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)

该错误本质是Chrome进程启动时无法建立调试端口连接,上述参数组合可覆盖虚拟机环境下的绝大多数场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:26:00