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

移除--headless=new选项后Selenium Chrome无法启动求助

解决Chrome非无头模式启动失败(DevToolsActivePort不存在)的问题

问题根源

你遇到的DevToolsActivePort file doesn't exist错误,大多出现在Linux环境下以root用户运行Chrome非无头实例的场景,核心原因有两点:

  • Chrome默认禁止root用户直接启动非无头模式的浏览器
  • 缺少处理共享内存、调试端口的必要启动参数

修复方案

方案1:添加必要启动参数(适用于有X桌面环境的场景)

保留已有的--no-sandbox,同时补充以下关键参数:

  • --disable-dev-shm-usage:解决Linux下/dev/shm空间不足导致的Chrome崩溃问题
  • --remote-debugging-port=9222:强制指定调试端口,避免DevToolsActivePort文件生成失败
  • --start-maximized:可选参数,让浏览器启动时自动最大化窗口

修改后的代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import time

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
# 移除--headless=new选项
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--remote-debugging-port=9222')
chrome_options.add_argument('--start-maximized')
service = Service()

# 可选:关闭不必要的日志输出
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

# 启动浏览器并访问目标页面
browser = webdriver.Chrome(service=service, options=chrome_options)
browser.get('https://law.go.kr/')
time.sleep(3)

方案2:使用虚拟显示(适用于无桌面的服务器环境)

如果你的运行环境是没有X桌面的Linux服务器,需要通过虚拟显示工具模拟桌面环境:

  1. 安装xvfb(以Debian/Ubuntu为例):
sudo apt-get update && sudo apt-get install -y xvfb
  1. 安装Python依赖库pyvirtualdisplay:
pip install pyvirtualdisplay
  1. 修改代码添加虚拟显示逻辑:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from pyvirtualdisplay import Display
import time

# 启动虚拟显示窗口(visible=1表示显示窗口,0为后台运行)
display = Display(visible=1, size=(1920, 1080))
display.start()

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
service = Service()

# 可选:关闭不必要的日志输出
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

# 启动浏览器并访问目标页面
browser = webdriver.Chrome(service=service, options=chrome_options)
browser.get('https://law.go.kr/')
time.sleep(3)

# 可选:任务完成后关闭浏览器和虚拟显示
# browser.quit()
# display.stop()

额外注意事项

  • 尽量避免以root用户运行Chrome,创建普通用户并赋予相应权限能提升稳定性
  • 确保ChromeDriver与Chrome浏览器版本完全匹配,版本不兼容也可能导致启动失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:55:12