ChromeDriver 121及以上版本自动化测试中强制允许第三方Cookie方法求助
Chrome 121及以上版本强化了第三方Cookie的隐私管控,默认启用的隐私沙箱策略会覆盖常规的Cookie允许配置,导致你之前尝试的参数和prefs失效。以下是经过验证的有效配置方案:
核心配置要点
需要同时通过命令行参数禁用隐私沙箱阻止特性和设置Chrome的Cookie控制模式为"允许所有",双管齐下才能绕过默认限制。
1. 命令行参数配置
添加以下参数到ChromeOptions:
--disable-features=PrivacySandboxThirdPartyCookieDeprecation,ThirdPartyCookieBlocking:直接禁用Chrome 121+新增的第三方Cookie阻止核心特性--allow-all-cookies:明确强制允许所有Cookie类型--no-sandbox/--disable-dev-shm-usage:解决自动化环境下的常见运行问题(非必须,但建议保留)
2. Prefs配置
通过实验性选项设置Chrome的Cookie控制模式,对应浏览器设置中"允许所有Cookie"的选项:
profile.cookie_controls_mode: 0(0=允许所有,1=阻止第三方,2=仅允许当前站点)- 配合其他辅助Cookie权限配置
完整代码示例(Python Selenium)
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 基础运行参数 chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") # 禁用第三方Cookie阻止特性 chrome_options.add_argument("--disable-features=PrivacySandboxThirdPartyCookieDeprecation,ThirdPartyCookieBlocking") # 强制允许所有Cookie chrome_options.add_argument("--allow-all-cookies") # 设置Cookie控制模式为允许所有 chrome_options.add_experimental_option("prefs", { "profile.default_content_setting_values.cookies": 1, "profile.cookie_controls_mode": 0, "profile.block_third_party_cookies": False, "profile.content_settings.exceptions.cookies.*.setting": 1 }) # 初始化驱动 driver = webdriver.Chrome(options=chrome_options) driver.get("你的测试页面URL")
额外注意事项
- 版本匹配:必须保证ChromeDriver版本与本地Chrome版本完全一致(比如Chrome 121.0.6167.139对应ChromeDriver 121.0.6167.85),版本不兼容会导致配置失效
- HTTP站点处理:如果测试站点是HTTP协议,需添加
--unsafely-treat-insecure-origin-as-secure=http://your-test-site.com,否则Chrome会对HTTP站点的第三方Cookie额外限制 - 避免无痕模式:Incognito模式下隐私设置优先级高于自动化配置,不要启用
--incognito参数
内容的提问来源于stack exchange,提问作者Nazar
相关产品推荐
相关产品推荐

