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

Ubuntu20.04下Selenium启动Chrome报DevToolsActivePort不存在错误求助

解决Ubuntu 20.04上Selenium Headless Chrome启动失败问题

问题核心原因

在无GUI的服务器环境下运行Headless Chrome时,默认配置缺少必要的启动参数,导致Chrome无法正常初始化会话,出现DevToolsActivePort file doesn't exist错误。

具体修复步骤

1. 添加完整的Headless Chrome启动参数

修改代码中的ChromeOptions配置,补充以下关键参数:

  • --no-sandbox:绕过Chrome的沙箱机制(root用户运行时必需)
  • --disable-dev-shm-usage:避免/dev/shm临时空间不足导致Chrome崩溃
  • --remote-debugging-port=9222:指定调试端口,解决DevToolsActivePort文件缺失问题
  • --window-size=1920,1080:设置窗口尺寸,避免页面布局异常
  • --headless=new:使用Chrome 112+支持的新Headless模式,兼容性更好

修改后的options代码段:

options = Options()
options.add_argument('--headless=new')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9222')
options.add_argument('--window-size=1920,1080')

2. 验证Chrome单独启动是否正常

在终端手动执行以下命令,测试Chrome能否正常运行:

google-chrome --headless=new --no-sandbox --disable-dev-shm-usage --remote-debugging-port=9222 https://www.google.com

如果命令执行后没有报错,说明Chrome本身可以正常启动,问题出在脚本配置。

3. 检查ChromeDriver权限

确保ChromeDriver文件具备可执行权限:

chmod +x /usr/bin/chromedriver/chromedriver

4. 安装Chrome依赖库(可选)

如果Chrome因依赖缺失无法启动,安装必要的系统库:

apt-get update && apt-get install -y libxss1 libappindicator1 libindicator7 fonts-liberation

修改后的完整代码片段

# Import request lib
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

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

import time #for calculate time of process
import datetime # for actual time and report of time of update
import random

# Read file with login and pass
start_time = time.time() #time of start function
update_resumes = 0 # amount of updated resume

service = Service(executable_path='/usr/bin/chromedriver/chromedriver')
options = Options()
# 配置Headless模式必需参数
options.add_argument('--headless=new')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9222')
options.add_argument('--window-size=1920,1080')

browser = webdriver.Chrome(service=service, options=options)
try:
    with open("/home/demo/hh-auto-raise-resume-server/hh-auto-raise-resume-server/login_pass_real.txt",
              "r") as f:
        lines = f.readlines()
        user_name = lines[0].rstrip('\n')
        password = lines[1]

        link = "https://sitename.xxx/"
        browser.get(link)

        # Tap button "Entry"
        delay = random.randint(1, 10)
        element1 = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'correct_selector')))
        button = browser.find_element(By.CSS_SELECTOR, 'correct_selector')  # 修正原代码中多余的"]"
        button.click()

        # other part of code

finally:
    browser.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:54:56