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

Linux无GUI环境下Python3+Selenium(Edge)会话创建失败求助

问题描述

在Windows 11上可正常运行的Selenium代码,在纯CLI无GUI的Linux机器执行时抛出SessionNotCreatedException错误。

代码示例

import time
from selenium.webdriver.common.by import By
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
browser = webdriver.Edge(EdgeChromiumDriverManager().install())

options = EdgeOptions()
options.use_chromium = True
options.add_argument("headless")
options.add_argument("disable-gpu")
browser = webdriver.Edge(options=options)
browser.get("http://www.abv.bg")
abv_output = browser.page_source
print(abv_output)

错误信息

root@pinger-st:/sbin# python3 simo.py

[WDM] - ====== WebDriver manager ======
[WDM] - Current edge version is 115.0.1901
[WDM] - Get LATEST edgedriver version for 115.0.1901 Edge
[WDM] - Driver [/root/.wdm/drivers/edgedriver/linux64/115.0.1901.183/msedgedriver] found in cache
Traceback (most recent call last):
  File "simo.py", line 5, in <module>
    browser = webdriver.Edge(EdgeChromiumDriverManager().install())
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/edge/webdriver.py", line 66, in __init__
    desired_capabilities=capabilities)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: No matching capabilities found

解决方案

1. 修复代码冗余与参数问题

代码中重复实例化浏览器对象,且第一个实例未配置headless参数,在无GUI环境下无法启动。合并实例化步骤并补充Linux必需参数:

import time
from selenium.webdriver.common.by import By
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from selenium.webdriver.edge.options import EdgeOptions

# 配置浏览器选项
options = EdgeOptions()
options.use_chromium = True
options.add_argument("--headless=new")  # 适配Edge 112+的新版无头模式
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")  # 规避Linux权限限制
options.add_argument("--disable-dev-shm-usage")  # 解决共享内存不足问题

# 一次性创建带驱动路径和选项的浏览器实例
browser = webdriver.Edge(executable_path=EdgeChromiumDriverManager().install(), options=options)

browser.get("http://www.abv.bg")
abv_output = browser.page_source
print(abv_output)
browser.quit()  # 关闭浏览器释放资源

2. 安装Linux图形依赖库

即使无头模式,Edge仍依赖基础图形组件,根据发行版执行安装命令:

Debian/Ubuntu系:

apt-get update && apt-get install -y libglib2.0-0 libnss3 libgconf-2-4 libfontconfig1 libx11-xcb1 libxcb-dri3-0 libdrm2 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2

RHEL/CentOS系:

yum install -y glib2.x86_64 nss.x86_64 gconf2.x86_64 fontconfig.x86_64 libX11-xcb.x86_64 libxcb-dri3.x86_64 libdrm.x86_64 libXcomposite.x86_64 libXdamage.x86_64 libXfixes.x86_64 libXrandr.x86_64 libgbm.x86_64 alsa-lib.x86_64

3. 更新Selenium及依赖包

旧版Selenium与Edge 115兼容性较差,执行升级命令:

pip3 install --upgrade selenium webdriver-manager

4. 确认Edge浏览器已安装

系统未安装Edge时,即使有驱动也无法运行,安装Edge稳定版:

Debian/Ubuntu系:

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge.list'
rm microsoft.gpg
apt-get update && apt-get install -y microsoft-edge-stable

内容的提问来源于stack exchange,提问作者svaleriev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:24:54