You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS EC2实例中运行Selenium(Firefox)时遭遇SessionNotCreatedException错误

在AWS EC2实例中运行Selenium(Firefox)时遭遇SessionNotCreatedException错误

看起来你遇到的是Selenium会话创建失败的问题,结合你的报错信息、版本信息和代码,我来帮你一步步排查解决:

一、先修正代码里的低级错误(最关键!)

我注意到你的代码里犯了一个很容易忽略的小错误:你导入的是Chrome专属的Options类,却拿它来初始化Firefox驱动,这会直接导致Selenium无法识别匹配的浏览器能力,触发SessionNotCreatedException。

错误的导入代码:

from selenium.webdriver.chrome.options import Options

修正为Firefox专用的Options:

from selenium.webdriver.firefox.options import Options

二、解决版本兼容性问题

你的版本组合存在严重的不匹配,这是核心问题之一:

  • Firefox 142.0是非常新的版本
  • geckodriver 0.36.0发布于2024年5月,仅支持Firefox 120~126版本,完全无法兼容Firefox 142.0
  • Selenium 4.35.0本身是支持最新Firefox的,但需要搭配对应的geckodriver版本

解决步骤:

  1. 在EC2实例上升级geckodriver到最新稳定版
    先移除旧版本,再下载对应x64架构的最新版本:

    # 移除旧的geckodriver
    sudo rm /usr/local/bin/geckodriver
    
    # 下载最新版(示例为2024年10月的稳定版0.39.0,可根据实际情况替换版本号)
    wget https://github.com/mozilla/geckodriver/releases/download/v0.39.0/geckodriver-v0.39.0-linux64.tar.gz
    
    # 解压文件
    tar -xvzf geckodriver-v0.39.0-linux64.tar.gz
    
    # 移动到系统可执行路径并赋予权限
    sudo mv geckodriver /usr/local/bin/
    sudo chmod +x /usr/local/bin/geckodriver
    
  2. 验证版本匹配
    运行以下命令确认版本对应:

    firefox --version
    geckodriver --version
    

    通常最新版geckodriver会支持当前最新的5个Firefox版本,确保两者版本差距在合理范围内。

三、优化Firefox无头模式配置

在EC2这类无图形界面的服务器上,需要正确配置无头模式。Firefox 115+之后推荐使用新的无头参数,避免旧参数导致的兼容性问题:

options.add_argument("--headless=new")
# 可额外添加资源优化参数
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920x1080")

四、确保EC2环境具备Firefox依赖库

Ubuntu实例默认可能缺少Firefox运行所需的依赖库,运行以下命令安装:

sudo apt update
sudo apt install -y libdbus-glib-1-2 gtk3.0 libx11-xcb1 libxtst6

另外提一句:关于SSH断开提示

你看到的client_loop: send disconnect: Broken pipe是SSH连接超时断开的提示,和Selenium的错误无关,只要解决了会话创建问题,程序正常运行后这个提示就不会影响使用了。

修正后的完整代码示例

import pandas as pd 
from selenium.webdriver.firefox.service import Service
from selenium import webdriver
# 导入Firefox专属Options
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
import requests
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

service = Service(executable_path="/usr/local/bin/geckodriver")
options = Options()
options.add_argument("--no-sandbox")
# 使用新的无头模式参数
options.add_argument("--headless=new")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920x1080")

driver = webdriver.Firefox(service=service, options=options)

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 08:23:02