Selenium配置Chrome指定Profile时WebDriver崩溃问题
解决Selenium启动Chrome指定Profile时的SessionNotCreatedException错误
你遇到的SessionNotCreatedException(提示DevToolsActivePort文件不存在)是Selenium调用Chrome指定Profile时的常见问题,以下是几个可行的解决办法:
1. 先关闭所有Chrome进程
如果有Chrome浏览器(包括后台进程)正在运行,会锁定用户数据目录,导致Selenium无法启动新实例。打开任务管理器,结束所有chrome.exe和chromedriver.exe进程后再重新运行代码。
2. 调整参数传递并添加必要配置
原代码的参数写法可能因路径空格或缺少调试端口配置导致错误,修改后的代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time opt = Options() opt.add_argument("--no-sandbox") # 给带空格的路径添加引号,避免解析错误 opt.add_argument(r"--user-data-dir='C:\Users\My User\AppData\Local\Google\Chrome\User Data'") opt.add_argument(r'--profile-directory=Profile 3') # 添加调试端口和禁用共享内存参数,解决DevToolsActivePort问题 opt.add_argument("--remote-debugging-port=9222") opt.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=opt) def open_web_whatsap(): driver.get("https://web.whatsapp.com/") time.sleep(20) open_web_whatsap()
3. 确认ChromeDriver与Chrome版本匹配
ChromeDriver必须和本地Chrome浏览器版本完全对应,否则会启动失败:
- 打开Chrome,输入
chrome://version/查看浏览器版本 - 下载对应版本的ChromeDriver替换现有驱动
4. 复制Profile到独立目录(避免冲突)
如果不想关闭正在使用的Chrome,可以把Profile 3文件夹复制到一个新的独立目录,然后修改代码指向这个新目录,这样就不会和正在运行的Chrome实例冲突:
# 指向复制后的Profile目录 opt.add_argument(r"--user-data-dir='C:\Users\My User\Desktop\My_Chrome_Profile'") opt.add_argument(r'--profile-directory=Profile 3')
注意:复制Profile时要确保Chrome没有运行,否则可能复制不完整。
内容的提问来源于stack exchange,提问作者Blitz Ritter
相关产品推荐
相关产品推荐

