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

Ubuntu环境下运行Selenium测试遇Chrome启动异常问题求助

解决Ubuntu下Selenium ChromeDriver启动失败问题

错误日志

[1;31mERROR[m] [1;31m  Run 1: 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: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'ip-10-1-8-153', ip: '10.1.8.153', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-1045-aws', java.version: '11.0.16'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x55cc6f1882c3 <unknown>

当前测试代码配置

public WebDriver beforeScenario() {
        if (cr.valueOnTheKey("Env").equals("PROD")) {
        WebDriverManager.chromedriver().setup();
        System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedrive");
        ChromeOptions options = new ChromeOptions();
        options.setHeadless(true);
        // options.addArguments("headless");
        options.addArguments("no-sandbox");
        options.addArguments("disable-dev-shm-usage");
        options.addArguments("disable-gpu");
        driver = new ChromeDriver(options);
        // driver.get("https://www.google.com");
        driver.manage().window().maximize();
        return driver;
        }

前置执行脚本

sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt install xvfb -y
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb || true
sudo apt-get install -f -y
sudo google-chrome -version
sudo chmod 777 /usr/bin/google-chrome
sudo nohup /usr/bin/google-chrome &
sudo wget https://chromedriver.storage.googleapis.com/105.0.5195.19/chromedriver_linux64.zip
sudo unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/bin/chromedrive
sudo chmod 777 /usr/bin/chromedrive
sudo nohup Xvfb -ac :99 -screen 0 1280x1024x16 & DISPLAY=:99 &

问题修复步骤

1. 修正ChromeDriver文件名拼写错误

脚本中将下载的chromedriver重命名为chromedrive(少了字母r),导致测试代码无法找到正确驱动文件。修改脚本中的重命名命令:

sudo mv chromedriver /usr/bin/chromedriver

2. 移除重复的驱动配置

测试代码同时使用WebDriverManager.chromedriver().setup()和System.setProperty,两者功能重复,保留WebDriverManager即可(它会自动匹配Chrome版本并管理驱动路径),删除手动设置的System.setProperty行。

3. 正确传递DISPLAY环境变量

启动Xvfb后,需要将DISPLAY=:99导出为全局环境变量,确保测试进程能读取到;同时在ChromeOptions中添加对应参数:

options.addArguments("display=:99");

脚本中替换最后一行的Xvfb启动命令:

sudo nohup Xvfb -ac :99 -screen 0 1280x1024x16 &
export DISPLAY=:99

4. 移除不必要的Chrome预启动

脚本中sudo nohup /usr/bin/google-chrome &会启动独立的Chrome进程,可能干扰测试用实例,直接删除该行。

5. 添加Headless模式窗口大小参数

在Linux Headless环境下,指定窗口大小可避免渲染异常,在ChromeOptions中添加:

options.addArguments("window-size=1920,1080");

修改后的最终代码与脚本

修改后的测试代码

public WebDriver beforeScenario() {
    if (cr.valueOnTheKey("Env").equals("PROD")) {
        WebDriverManager.chromedriver().setup();
        ChromeOptions options = new ChromeOptions();
        options.setHeadless(true);
        options.addArguments("no-sandbox");
        options.addArguments("disable-dev-shm-usage");
        options.addArguments("disable-gpu");
        options.addArguments("window-size=1920,1080");
        options.addArguments("display=:99");
        driver = new ChromeDriver(options);
        driver.manage().window().maximize();
        return driver;
    }
    // 非PROD环境请补充对应逻辑
    return null;
}

修改后的前置脚本

sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt install xvfb -y
# 安装Google Chrome
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb || true
sudo apt-get install -f -y
sudo google-chrome -version
sudo chmod 777 /usr/bin/google-chrome
# 下载并配置ChromeDriver
sudo wget https://chromedriver.storage.googleapis.com/105.0.5195.19/chromedriver_linux64.zip
sudo unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/bin/chromedriver
sudo chmod 777 /usr/bin/chromedriver
# 启动虚拟显示并设置环境变量
sudo nohup Xvfb -ac :99 -screen 0 1280x1024x16 &
export DISPLAY=:99

执行上述修改后的脚本,再运行mvn clean test即可启动ChromeDriver执行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:20:31