You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Selenium启动Chrome时触发SessionNotCreatedException错误的解决方法咨询

Selenium启动Chrome时触发SessionNotCreatedException错误的解决方法咨询

问题描述

我第一次配置Selenium,运行以下代码时遇到了错误:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

chrome_driver_path = ChromeDriverManager().install()

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option(name="detach", value=True)

service = ChromeService(executable_path=chrome_driver_path)
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get(url="https://www.google.com")

第一次错误信息

Traceback (most recent call last):
  File "D:\Python\Day48a\main.py", line 13, in <module>
    driver = webdriver.Chrome(service=service, options=chrome_options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in __init__
    super().__init__(
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 66, in __init__
    super().__init__(command_executor=executor, options=options)
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 241, in __init__
    self.start_session(capabilities)
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 329, in start_session
    response = self.execute(Command.NEW_SESSION, caps)["value"]
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 384, in execute
    self.error_handler.check_response(response)
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 232, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from unknown error: cannot find Chrome binary
Stacktrace:
    GetHandleVerifier [0x00E53433+25059]
    (No symbol) [0x00DDCE34]
    (No symbol) [0x00CBBEC3]
    (No symbol) [0x00CE9570]
    (No symbol) [0x00CE7169]
    (No symbol) [0x00D2B4D6]
    (No symbol) [0x00D2AC9A]
    (No symbol) [0x00D21C96]
    (No symbol) [0x00CF3FAC]
    (No symbol) [0x00CF4F3D]
    GetHandleVerifier [0x01145593+3113795]
    GetHandleVerifier [0x0115A25A+3198986]
    GetHandleVerifier [0x01152A32+3168226]
    GetHandleVerifier [0x00EF32A0+680016]
    (No symbol) [0x00DE577D]
    (No symbol) [0x00DE2A28]
    (No symbol) [0x00DE2BC5]
    (No symbol) [0x00DD5820]
    BaseThreadInitThunk [0x7510FCC9+25]
    RtlGetAppContainerNamedObjectPath [0x770B809E+286]
    RtlGetAppContainerNamedObjectPath [0x770B806E+238]

我尝试指定Chrome二进制文件路径,修改后的代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

chrome_driver_path = ChromeDriverManager().install()

chrome_options = webdriver.ChromeOptions()
chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application"
chrome_options.add_experimental_option(name="detach", value=True)

service = ChromeService(executable_path=chrome_driver_path)
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get(url="https://www.google.com")

但又遇到了新的错误:

Traceback (most recent call last):
  File "D:\Python\Day48a\main.py", line 12, in <module>
    driver = webdriver.Chrome(service=service, options=chrome_options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in __init__
    super().__init__(
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 66, in __init__
    super().__init__(command_executor=executor, options=options)
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 241, in __init__
    self.start_session(capabilities)
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 329, in start_session
    response = self.execute(Command.NEW_SESSION, caps)["value"]
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 384, in execute
    self.error_handler.check_response(response)
  File "D:\Python\Day48a\.venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 232, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Failed to create Chrome process.
Stacktrace:
    GetHandleVerifier [0x00E53433+25059]
    (No symbol) [0x00DDCE34]
    (No symbol) [0x00CBBEC3]
    (No symbol) [0x00CEA97B]
    (No symbol) [0x00CE7169]
    (No symbol) [0x00D2B4D6]
    (No symbol) [0x00D2AC9A]
    (No symbol) [0x00D21C96]
    (No symbol) [0x00CF3FAC]
    (No symbol) [0x00CF4F3D]
    GetHandleVerifier [0x01145593+3113795]
    GetHandleVerifier [0x0115A25A+3198986]
    GetHandleVerifier [0x01152A32+3168226]
    GetHandleVerifier [0x00EF32A0+680016]
    (No symbol) [0x00DE577D]
    (No symbol) [0x00DE2A28]
    (No symbol) [0x00DE2BC5]
    (No symbol) [0x00DD5820]
    BaseThreadInitThunk [0x7510FCC9+25]
    RtlGetAppContainerNamedObjectPath [0x770B809E+286]
    RtlGetAppContainerNamedObjectPath [0x770B806E+238]

我的Chrome版本是:131.0.6778.85,请问该如何解决这个问题?


解决方法

看起来你遇到的核心问题是Selenium无法正确定位或启动Chrome浏览器的可执行文件,我来帮你一步步解决:

1. 修正Chrome二进制文件路径(最关键的一步)

你之前指定的binary_location是文件夹路径C:\Program Files\Google\Chrome\Application,但Selenium需要的是具体的可执行文件路径,也就是chrome.exe的完整路径。修改这一行即可:

chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"

如果你的Chrome是32位版本,可能安装在Program Files (x86)目录下,对应的路径是:

chrome_options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

2. 确认Chrome的实际安装路径

如果不确定自己的Chrome装在哪里,可以这样找:

  • 右键桌面上的Chrome快捷方式,选择「属性」
  • 在「快捷方式」标签页的「目标」栏,复制完整的路径(注意去掉末尾的 --single-argument这类启动参数,只保留到chrome.exe的部分)

3. 验证ChromeDriver与Chrome版本匹配

虽然你用了webdriver-manager自动管理驱动,但偶尔可能出现版本不匹配的情况。你可以:

  • 运行代码后,查看ChromeDriverManager().install()返回的路径,找到chromedriver.exe
  • 双击运行它,在弹出的命令行窗口里看版本号,确认是131.0.6778.85左右的版本(和你的Chrome版本一致)

4. 关闭残留的Chrome进程

如果之前的Chrome或ChromeDriver进程没有正常关闭,可能会导致新进程无法启动:

  • 打开任务管理器(Ctrl+Shift+Esc)
  • 找到所有chrome.exechromedriver.exe进程,右键结束任务
  • 再重新运行你的Python脚本

5. 以管理员权限运行脚本(可选)

有时候系统权限不足会导致无法创建进程,你可以:

  • 右键你的IDE(比如VS Code、PyCharm)或终端,选择「以管理员身份运行」
  • 再执行你的Python脚本

修正后的完整代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

chrome_driver_path = ChromeDriverManager().install()

chrome_options = webdriver.ChromeOptions()
# 修正为完整的chrome.exe路径
chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
chrome_options.add_experimental_option(name="detach", value=True)

service = ChromeService(executable_path=chrome_driver_path)
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get(url="https://www.google.com")

备注:内容来源于stack exchange,提问作者Micha K Makulatura

火山引擎 最新活动