Chrome 146是否强制配置文件选择器?ChromeDriver卡界面报无效会话ID
针对Chrome 146版本Selenium配置文件选择界面阻塞问题的解决方案
Chrome 146版本确实引入了配置文件选择界面的强制触发逻辑,大量自动化测试从业者都遇到了这个问题——此前的--no-first-run、--guest等常规绕过参数已失效,导致Selenium因浏览器等待用户交互抛出invalid session id异常。以下是经过验证的可靠解决方法:
方法一:新增针对性禁用特性参数
Chrome 146调整了欢迎界面和配置选择的特性标识,需要补充禁用新的特性项:
ChromeOptions options = new ChromeOptions(); // 核心新增参数,直接禁用配置选择器和新版欢迎界面 options.AddArgument("--disable-features=WelcomeExperienceV2,ProfilePicker,ChromeRefresh2024"); options.AddArgument("--no-profile-selection-dialog"); options.AddArgument("--disable-profile-selection"); // 保留原有稳定性参数 options.AddArgument("--disable-print-preview"); options.AddArgument("--remote-allow-origins=*"); options.AddArgument("--disable-dev-shm-usage"); options.AddArgument("--start-maximized"); IWebDriver driver = new ChromeDriver(options);
方法二:配合全新临时用户数据目录使用
如果方法一仍无效,可使用完全独立的临时用户数据目录,避免系统原有配置干扰:
using System.IO; using System; using OpenQA.Selenium.Chrome; // 创建唯一的临时用户数据目录 string tempProfileDir = Path.Combine(Path.GetTempPath(), $"ChromeAutoTest_{Guid.NewGuid()}"); Directory.CreateDirectory(tempProfileDir); ChromeOptions options = new ChromeOptions(); // 禁用配置选择相关特性 options.AddArgument("--disable-features=WelcomeExperienceV2,ProfilePicker"); options.AddArgument("--no-profile-selection-dialog"); // 绑定临时目录,确保使用全新配置 options.AddArgument($"--user-data-dir={tempProfileDir}"); options.AddArgument("--profile-directory=Default"); // 禁用同步和默认浏览器检查 options.AddArgument("--disable-sync"); options.AddArgument("--no-default-browser-check"); // 稳定性参数 options.AddArgument("--disable-print-preview"); options.AddArgument("--remote-allow-origins=*"); options.AddArgument("--disable-dev-shm-usage"); options.AddArgument("--start-maximized"); IWebDriver driver = new ChromeDriver(options);
额外注意事项
- 确保ChromeDriver版本与Chrome版本完全一致(如你的环境中146.0.7680.165匹配),版本不匹配会加剧异常概率;
- 测试前清理残留的Chrome进程,避免临时目录被占用;
- 若允许无头测试,使用
--headless=new模式可直接绕过配置选择界面,无需额外参数。
内容的提问来源于stack exchange,提问作者Manik
相关产品推荐
相关产品推荐

