Python Selenium如何指定启动Chrome的特定用户配置文件
问题原因
你遇到的自动拼接\Default目录的问题是Chrome启动参数的固有逻辑导致的:user-data-dir参数的作用是指定Chrome存放所有配置文件的根目录,默认不额外指定配置名称时,Chrome会自动加载根目录下的Default配置。你之前把具体的Profile 16路径传给user-data-dir,Chrome会将该路径作为根目录,自动在其下创建Default文件夹作为加载的配置,就出现了路径拼接的问题。
解决方案
需要拆分两个参数分别配置,不要把具体Profile路径传给user-data-dir:
user-data-dir参数填写到Chrome配置根目录「User Data」的层级即可,不需要深入到具体Profile文件夹- 额外添加
profile-directory参数,取值为你要加载的具体配置文件夹的名称,也就是Profile 16
正确代码示例
Selenium 3.x版本写法
from selenium import webdriver options = webdriver.ChromeOptions() # 使用原始字符串避免路径转义问题,路径仅到User Data层级 options.add_argument(r"user-data-dir=C:\Users\user123\AppData\Local\Google\Chrome\User Data") # 单独指定要加载的配置文件夹名称 options.add_argument("profile-directory=Profile 16") driver = webdriver.Chrome(executable_path=r"C:\Users\chromedriver.exe", chrome_options=options)
Selenium 4.x版本写法
Selenium 4开始已废弃chrome_options和executable_path直接传参的写法,调整为通过Service对象传入驱动路径:
from selenium import webdriver from selenium.webdriver.chrome.service import Service options = webdriver.ChromeOptions() options.add_argument(r"user-data-dir=C:\Users\user123\AppData\Local\Google\Chrome\User Data") options.add_argument("profile-directory=Profile 16") service = Service(executable_path=r"C:\Users\chromedriver.exe") driver = webdriver.Chrome(service=service, options=options)
注意事项
- 运行代码前必须关闭所有正在运行的Chrome窗口,否则Chrome会锁定配置文件,导致Selenium无法正常加载指定配置,依旧生成临时配置
- 启动后可访问
chrome://version/查看Profile Path参数,确认路径为C:\Users\user123\AppData\Local\Google\Chrome\User Data\Profile 16即为加载成功 - 需提前确认本地Chrome的「User Data」目录下确实存在名为
Profile 16的文件夹,避免拼写错误导致加载失败 - 如果你要加载的是Chrome默认的Default配置,不需要添加
profile-directory参数即可
内容的提问来源于stack exchange,提问作者void_eater
相关产品推荐
相关产品推荐

