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.exe和chromedriver.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




