使用指定Chrome配置文件启动Selenium时程序崩溃求助
解决Selenium启动指定Chrome配置文件崩溃的问题
问题重现
尝试用Selenium启动带有指定Chrome配置文件的浏览器时出现崩溃,报错提示DevToolsActivePort file doesn't exist,相关代码如下:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time options = webdriver.ChromeOptions() options.add_argument("--profile-directory=Profile 2") options.add_argument("--user-data-dir=C://Users//user//AppData//Local//Google//Chrome//User Data") #options.add_argument('--headless') driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) time.sleep(3)
控制台错误输出:
Traceback (most recent call last): File "C:\Users\user\PycharmProjects\pythonProject3\main.py", line 13, in <module> driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) File "C:\Users\user\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 84, in __init__ super().__init__( File "C:\Users\user\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 104, in __init__ super().__init__( File "C:\Users\user\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 286, in __init__ self.start_session(capabilities, browser_profile) File "C:\Users\user\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 378, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "C:\Users\user\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 440, in execute self.error_handler.check_response(response) File "C:\Users\user\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 245, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited normally. (unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome location C:\Program Files\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.) Stacktrace: Backtrace: GetHandleVerifier [0x005B8893+48451] (No symbol) [0x0054B8A1] (No symbol) [0x00455058] (No symbol) [0x00473211] (No symbol) [0x00470019] (No symbol) [0x004A0798] (No symbol) [0x004A047C] (No symbol) [0x0049A0B6] (No symbol) [0x00477E08] (No symbol) [0x00478F2D] GetHandleVerifier [0x00818E3A+2540266] GetHandleVerifier [0x00858959+2801161] GetHandleVerifier [0x0085295C+2776588] GetHandleVerifier [0x00642280+612144] (No symbol) [0x00554F6C] (No symbol) [0x005511D8] (No symbol) [0x005512BB] (No symbol) [0x00544857] BaseThreadInitThunk [0x77680099+25] RtlGetAppContainerNamedObjectPath [0x77CA7B6E+286] RtlGetAppContainerNamedObjectPath [0x77CA7B3E+238] Process finished with exit code 1
解决方案
1. 关闭所有Chrome进程
打开任务管理器,结束所有chrome.exe和chromedriver.exe进程,避免配置文件被其他实例占用。
2. 修正路径格式
Windows路径建议使用原始字符串(前缀r)或单斜杠,避免转义字符引发的问题:
options.add_argument(r"--user-data-dir=C:\Users\user\AppData\Local\Google\Chrome\User Data")
3. 添加必要的启动参数
添加以下参数解决DevToolsActivePort相关冲突:
options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--remote-debugging-port=9222") # 指定固定调试端口,避免端口占用
4. 验证配置文件路径
确认Profile 2文件夹确实存在于User Data目录下,路径名称需完全匹配(注意大小写、空格)。
5. 复制配置文件到独立目录(可选)
如果原用户数据目录被其他Chrome实例占用,可复制Profile 2到新的独立目录,再修改代码中的路径:
options.add_argument(r"--user-data-dir=C:\Users\user\Documents\MyChromeProfile") options.add_argument("--profile-directory=Profile 2")
修改后的完整代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time options = webdriver.ChromeOptions() options.add_argument(r"--user-data-dir=C:\Users\user\AppData\Local\Google\Chrome\User Data") options.add_argument("--profile-directory=Profile 2") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--remote-debugging-port=9222") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) time.sleep(3) driver.quit() # 程序结束时主动关闭浏览器进程
内容的提问来源于stack exchange,提问作者xX_Banano_Xx
相关产品推荐
相关产品推荐

