AWS EC2 Ubuntu环境下Python+Selenium+Geckodriver读取Marionette端口失败
解决方案
1. 更换Headless模式参数(优先尝试)
Selenium 4.x开始,Firefox旧版headless=True参数存在兼容性问题,建议改用官方推荐的新参数:
from selenium import webdriver from selenium.webdriver.firefox.service import Service as FirefoxService from selenium.webdriver.firefox.options import Options as FirefoxOption from webdriver_manager.firefox import GeckoDriverManager options = FirefoxOption() # 替换旧的无头模式设置 options.add_argument("--headless=new") # 禁用GPU避免无头模式渲染异常 options.add_argument("--disable-gpu") # 强制指定Marionette通信端口 options.add_argument("--marionette-port=2828") service = FirefoxService(GeckoDriverManager().install()) # 生成调试日志,方便排查深层问题 service.log_path = "./geckodriver.log" driver = webdriver.Firefox( service=service, options=options )
2. 补全Firefox运行依赖
AWS EC2 Ubuntu服务器默认缺少桌面环境依赖,执行以下命令安装:
sudo apt update sudo apt install -y libgtk-3-0 libdbus-glib-1-2 libxt6
3. 手动指定Firefox二进制路径
若系统Firefox路径不标准,先通过which firefox命令查找路径,再在代码中指定:
# 替换为实际查到的路径 options.binary_location = "/usr/bin/firefox"
4. 调整Geckodriver启动参数
通过Service对象延长超时时间并开启调试日志:
service = FirefoxService( executable_path=GeckoDriverManager().install(), # 延长启动超时至30秒 timeout=30, # 开启调试级日志 service_args=["--log", "debug"] )
5. 确认版本兼容性
你的Geckodriver 0.32.0理论支持Firefox 106-108(你的Firefox 107符合要求),若仍有问题,可尝试:
- 重新安装Firefox确保完整性
- 更换Geckodriver至对应版本
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

