无法在无头模式下创建Python Chrome WebDriver问题求助
问题原因及解决方案
可能的原因
- 旧版无头模式参数兼容性:Chrome 108使用的传统
--headless参数在Linux等环境下,需要额外配置才能稳定运行,不像新版--headless=new那样无需补充参数。 - 缺少关键启动参数:Linux环境下,无头Chrome默认依赖
/dev/shm共享内存,若空间不足会直接崩溃;同时无头模式默认窗口尺寸极小,可能触发渲染相关的启动失败。 - 远程调试端口冲突:
--remote-debugging-port=9222参数在无头模式下可能与Chrome内部启动逻辑冲突,或该端口已被其他进程占用,导致Chrome无法正常初始化。
修复步骤
- 补充无头模式必需参数:添加
--disable-dev-shm-usage解决共享内存不足问题,加上--window-size=1920,1080固定窗口尺寸,避免渲染异常。 - 调整远程调试端口:如果不需要远程调试功能,直接移除该参数;若必须保留,更换为未被占用的端口(如
9223)。 - 添加兼容旧版的参数:补充
--disable-gpu,确保旧版无头模式启动稳定。
修改后的代码
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager chrome_options = Options() chrome_options.add_argument('--headless') # 移除远程调试端口(或更换为其他端口) # chrome_options.add_argument('--remote-debugging-port=9223') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') chrome_options.add_argument('--window-size=1920,1080') chrome_options.add_argument('--disable-gpu') driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options) print(driver) driver.quit() # 记得退出驱动释放资源
额外排查点
- 检查端口占用:在Linux下执行
lsof -i :9222,若有进程占用,杀死该进程或更换端口。 - 验证版本匹配:手动执行
chromedriver --version,确保其版本与Chrome完全一致。 - 资源分配检查:若在容器/CI环境运行,确保分配了足够的内存和CPU资源,无头Chrome启动需要基础资源支持。
内容的提问来源于stack exchange,提问作者Boaz Zoref
相关产品推荐
相关产品推荐

