如何使用Selenium同时打开多个Chrome配置文件实例
报错翻译
你遇到的报错user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir中文含义为:用户数据目录已被占用,请为--user-data-dir参数指定唯一值,或不使用--user-data-dir参数。
报错原因
Chrome 对用户数据根目录有独占锁机制:你的所有启动实例都指定了同一个--user-data-dir路径(即Chrome默认的全局用户数据根目录),即使通过profile-directory参数切换了子配置文件夹,所有实例仍然会争抢根目录的独占锁,同一时间仅能有一个实例正常运行。
解决方案
方案1:为每个实例分配独立的用户数据根目录(推荐)
彻底规避目录锁冲突,每个Selenium实例单独指定独立的用户数据根目录即可,示例代码如下:
from os.path import expanduser # 示例:启动3个独立的Chrome实例 profile_list = ["work", "personal", "test"] for profile_name in profile_list: options = webdriver.ChromeOptions() # 每个实例对应独立的根目录,不要共用默认的User Data根路径 custom_data_dir = f"{expanduser}\\AppData\\Local\\Google\\Chrome\\User Data_{profile_name}" options.add_argument(f"--user-data-dir={custom_data_dir}") # 初始化driver即可正常启动 driver = webdriver.Chrome(options=options)
首次启动对应实例时,Chrome会自动生成对应目录的配置文件,后续启动会沿用该目录下的缓存、插件、登录状态等数据。
方案2:需共用默认根目录下已有配置的处理逻辑
如果必须使用默认User Data根目录下的已有配置,需满足两个前提:
- 启动Selenium实例前,彻底关闭所有Chrome进程(包括后台驻留的Chrome通知、扩展进程等)
- 同一时间仅能启动一个Selenium Chrome实例,等前一个实例完全退出、释放目录锁后,再启动下一个实例
内容的提问来源于stack exchange,提问作者Flu_Py Developer
相关产品推荐
相关产品推荐

