EC2实例中Google Chrome无法启动,Selenium脚本执行报错
解决EC2实例中Selenium Chrome无头模式启动崩溃问题
已在EC2实例安装对应版本的Google Chrome(109.0.5414.119)、ChromeDriver(109.0.5414.74)和Selenium(4.8.0),运行以下Python脚本时出现启动崩溃错误:
from selenium import webdriver service = webdriver.chrome.service.Service('/usr/bin/chromedriver') service.start() options = webdriver.ChromeOptions() options.add_argument('--headless') options = options.to_capabilities() driver = webdriver.Remote(service.service_url, options) driver.get("https://www.google.com")
报错信息(已翻译为中文):
raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome启动失败:已崩溃。 (unknown error: DevToolsActivePort文件不存在) (从路径/usr/bin/google-chrome启动的进程已不再运行,因此ChromeDriver判定Chrome已崩溃。) Stacktrace: #0 0x55cd3bfbd303 <unknown> #1 0x55cd3bd91d37 <unknown> #2 0x55cd3bdba157 <unknown> #3 0x55cd3bdb6330 <unknown> #4 0x55cd3bdf74a6 <unknown> #5 0x55cd3bdee753 <unknown> #6 0x55cd3bdc1a14 <unknown> #7 0x55cd3bdc2b7e <unknown> #8 0x55cd3c00c32e <unknown> #9 0x55cd3c00fc0e <unknown> #10 0x55cd3bff2610 <unknown> #11 0x55cd3c010c23 <unknown> #12 0x55cd3bfe4545 <unknown> #13 0x55cd3c0316a8 <unknown> #14 0x55cd3c031836 <unknown> #15 0x55cd3c04cd13 <unknown> #16 0x7f0f6b23e44b start_thread
问题原因
EC2实例属于无图形界面的服务器环境,无头模式下Chrome需要额外参数适配环境,缺少关键参数会导致启动崩溃、DevToolsActivePort文件无法生成。
修复方案
修改ChromeOptions添加必要参数,并优化Selenium 4+的代码写法:
修复后的代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service('/usr/bin/chromedriver') options = webdriver.ChromeOptions() # 添加适配EC2环境的核心参数 options.add_argument('--headless=new') # Selenium 4.8+推荐的新无头模式,稳定性更强 options.add_argument('--no-sandbox') # 禁用沙箱,非特权用户环境下必须开启 options.add_argument('--disable-dev-shm-usage') # 避免/dev/shm内存不足导致崩溃 options.add_argument('--remote-debugging-port=9222') # 指定调试端口,解决DevToolsActivePort问题 # 直接初始化ChromeDriver,无需手动启动Service再调用Remote driver = webdriver.Chrome(service=service, options=options) driver.get("https://www.google.com") print(driver.title) # 验证页面是否成功加载 driver.quit() # 执行完毕后关闭浏览器
额外检查项
- 确认Chrome与ChromeDriver版本完全匹配(当前版本兼容,但需避免多版本冲突)
- 运行脚本的用户对
/usr/bin/chromedriver和/usr/bin/google-chrome拥有执行权限 - 若使用Amazon Linux 2等系统,需安装Chrome依赖库:
yum install -y libX11 libXext libXtst
内容的提问来源于stack exchange,提问作者Krishna Vykuntham
相关产品推荐
相关产品推荐

