Selenium启动Chrome报user data directory已占用错误,现有方案无效如何解决
问题根因
你之前尝试的两个方案报错,核心有两个问题:
- 你指定的Profile 2/3正在被本地手动打开的Chrome浏览器占用,同一时间同一个用户数据目录不支持两个Chrome进程同时读写
- 配置参数的路径逻辑写错:
--user-data-dir参数只需要填到Chrome用户数据根目录(一般是C:\Users\Simone\AppData\Local\Google\Chrome\User Data),不需要写到具体的Profile子文件夹,--profile-directory才是用来指定具体要加载哪个Profile子文件夹的参数,你之前把两个参数的路径层级搞混,导致Selenium找不到正确的目录。
解决方案
方案1:无需保留登录/配置记录(最适合新手入门)
如果不需要复用已有的Chrome登录状态、插件等配置,直接让Selenium生成临时匿名会话即可,完全不会出现目录占用问题,代码简化为:
from selenium import webdriver # 高版本Selenium(4.0+)不需要手动指定chromedriver路径,会自动匹配适配的驱动 driver = webdriver.Chrome() driver.get("https://www.google.com/")
如果是低版本Selenium需要手动指定驱动,代码如下:
from selenium import webdriver driver = webdriver.Chrome(executable_path=r'./chromedriver.exe') driver.get("https://www.google.com/")
方案2:需要复用已有Chrome配置
如果必须要用到本地Chrome里的登录态、书签、插件等内容,按以下步骤修改:
- 先关闭所有本地打开的Chrome窗口,打开任务管理器结束所有
chrome.exe后台进程,避免目录占用 - 修正配置参数的路径写法,示例代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # user-data-dir只写到根目录User Data层 options.add_argument(r'--user-data-dir=C:\Users\Simone\AppData\Local\Google\Chrome\User Data') # 单独指定要加载的Profile文件夹名 options.add_argument(r'--profile-directory=Profile 3') # 注意旧版本的chrome_options参数已被弃用,统一用options参数传递配置 driver = webdriver.Chrome(executable_path=r'.\chromedriver.exe', options=options) driver.get("https://www.google.com/")
方案3:给自动化单独创建专属Profile(长期用最稳定)
如果不想每次跑代码都关闭本地Chrome,可以单独给Selenium创建一个专属的Profile,不要和日常使用的Profile混用:
- 打开Chrome新建一个Profile,命名为
Selenium专属,创建完成后关闭所有Chrome窗口 - 找到这个新Profile对应的文件夹名(一般是Profile 4之类的,按你自己的实际情况修改)
- 跑代码的时候只加载这个专属Profile,日常不要手动打开这个Profile使用,就不会出现占用问题。
内容的提问来源于stack exchange,提问作者Pablo Domingues
相关产品推荐
相关产品推荐

