Selenium非无头模式下使用默认Chrome配置文件运行报错排查
问题原因与解决方法
核心原因
你遇到的DevToolsActivePort file doesn't exist错误,本质是当前已有Chrome实例在占用你指定的Default配置文件。Chrome的用户数据目录(包括配置文件)是排他性的,不允许多个Chrome进程同时使用同一配置,因此Chromedriver启动的Chrome进程会被强制终止,进而触发该报错。
另外你尝试直接将--user-data-dir指向Default子文件夹的写法是错误的:--user-data-dir需要指向整个用户数据根目录(即C:\Users\pcped\AppData\Local\Google\Chrome\User Data),具体的配置文件夹由--profile-directory参数指定。
解决步骤
1. 释放被占用的配置文件
关闭所有正在运行的Chrome窗口,包括后台隐藏的chrome.exe进程(通过任务管理器结束所有相关进程),确保Default配置文件没有被占用后,重新运行你的代码。
2. 使用独立测试配置文件(推荐)
如果不想关闭日常使用的Chrome,可以复制原Default配置文件夹作为独立测试用,避免冲突:
chrome_options = Options() # 复制原Default文件夹到新路径,例如TestProfile chrome_options.add_argument("--user-data-dir=C:\\Users\\pcped\\AppData\\Local\\Google\\Chrome\\Test User Data") chrome_options.add_argument('--profile-directory=TestProfile') chrome_options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=chrome_options)
3. 修复无头模式加载配置的问题
无头模式下无法获取登录凭据,是因为旧版无头模式行为和正常Chrome差异较大。可以使用Chrome 112+支持的新无头模式,同时确保配置文件未被占用:
chrome_options = Options() chrome_options.add_argument("--headless=new") # 新无头模式,更接近正常Chrome行为 chrome_options.add_argument("--user-data-dir=C:\\Users\\pcped\\AppData\\Local\\Google\\Chrome\\User Data") chrome_options.add_argument('--profile-directory=Default') chrome_options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=chrome_options)
内容的提问来源于stack exchange,提问作者PedroAMC
相关产品推荐
相关产品推荐

