Ubuntu无GUI服务器运行Selenium+Chrome无头脚本失败,如何解决?
解决方案
从错误信息来看,问题核心是root用户运行Chrome未禁用沙箱,以及无头模式下的DevTools端口异常。按以下方式修改脚本即可解决:
1. 补充Chrome启动参数
在原有Options配置中添加3个关键参数:
--no-sandbox:允许root用户启动Chrome(Chrome默认禁止root身份无沙箱运行)--disable-dev-shm-usage:规避服务器/dev/shm分区空间不足导致的浏览器崩溃--remote-debugging-port=9222:指定调试端口,解决DevToolsActivePort文件不存在的问题
2. 修改后的完整脚本
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.page_load_strategy = 'eager' options.add_argument('--headless=new') options.add_argument('--disable-gpu') # 新增适配服务器环境的参数 options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--remote-debugging-port=9222') driver = webdriver.Chrome(options=options)
额外说明
- 若后续切换为非root用户执行脚本,可移除
--no-sandbox参数,非root用户默认支持沙箱模式 - Selenium 4.10+的自动驱动管理会自动匹配服务器Chrome 117版本的驱动,无需手动安装ChromeDriver
内容的提问来源于stack exchange,提问作者Rongeegee
相关产品推荐
相关产品推荐

