AWS EC2实例上无法运行Python+Selenium开发的RPA求助
解决AWS EC2上Selenium+Chrome的"Chrome is not reachable"及"Error: Chrome Trap"问题
核心排查方向
EC2属于无头服务器环境,Chrome运行依赖特定配置、权限及系统库,以下是针对性解决方案:
- 强制匹配Chrome与Chromedriver版本
版本不兼容是这类问题的高发原因:
- 执行命令确认版本:
google-chrome --version chromedriver --version - 确保两者主版本号完全一致(如均为118.0.5993.70),若不匹配,下载对应版本的chromedriver替换
/usr/bin目录下的文件。
- 安装Chrome运行依赖库
EC2默认缺少部分桌面环境依赖,根据系统类型执行:
- Ubuntu/Debian:
sudo apt-get update && sudo apt-get install -y libnss3 libgconf-2-4 libxss1 libappindicator1 libindicator7 libgbm-dev - Amazon Linux 2/CentOS:
sudo yum update && sudo yum install -y libX11 libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender libXtst cups-libs libXScrnSaver libXcomposite alsa-lib atk gtk3 libgbm
- 配置正确的ChromeOptions参数
无头环境必须添加以下关键参数,替换你的WebDriver初始化代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options def init_chrome_driver(): chrome_options = Options() # 新版无头模式,兼容性更强 chrome_options.add_argument("--headless=new") # 禁用沙箱,非桌面环境强制要求 chrome_options.add_argument("--no-sandbox") # 解决EC2上/dev/shm空间不足问题 chrome_options.add_argument("--disable-dev-shm-usage") # 禁用GPU渲染,无头环境无需 chrome_options.add_argument("--disable-gpu") # 明确指定Chrome二进制文件路径 chrome_options.binary_location = "/usr/bin/google-chrome" # 可选:开启远程调试端口用于排查 chrome_options.add_argument("--remote-debugging-port=9222") return webdriver.Chrome(options=chrome_options)
- 修复"Error: Chrome Trap"权限问题
- 检查Chrome执行权限:
确保权限为ls -l /usr/bin/google-chrome-rwxr-xr-x,否则执行:sudo chmod +x /usr/bin/google-chrome - 禁止用root用户运行Chrome,创建普通用户并切换执行:
sudo useradd -m rpa-runner sudo su - rpa-runner # 在此用户下运行你的RPA程序
- 验证Chrome单独运行能力
执行以下命令测试Chrome是否能正常启动:
/usr/bin/google-chrome --headless=new --no-sandbox --disable-gpu --dump-dom https://www.google.com
若能输出HTML源码,说明Chrome本身无问题,问题出在Selenium配置。
内容的提问来源于stack exchange,提问作者Márcio Scotuzzi Jr.
相关产品推荐
相关产品推荐

