【发布时间】:2020-03-21 18:54:58
【问题描述】:
在尝试重新创建新的 ChromeDriver 实例时,我不断丢失浏览器的会话数据。在调用 driver.Quit() 之前,我能够登录 GitHub 网站。
令人惊讶的是,使用相同的 user-data-dir 选项重新创建新的驱动程序实例使我不再登录。
Chrome 选项
var options = new ChromeOptions();
options.AddArgument($"--user-data-dir={dir}"); // D:\repos\selenium-playground\bin\debug\browser\data
options.AddArgument("--disable-extensions");
options.AddArgument("--disable-gpu");
options.AddArgument("--disable-notifications");
options.AddArgument("--ignore-certificate-errors");
options.AddArgument("--no-sandbox");
options.AddArgument("--disable-dev-shm-usage");
options.AddUserProfilePreference("credentials_enable_service", false);
options.AddUserProfilePreference("profile.password_manager_enabled", false);
options.AddExcludedArgument("enable-automation");
options.AddAdditionalCapability("useAutomationExtension", false);
Chrome 驱动服务
var service = ChromeDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
创建 ChromeDriver 实例
在对 GitHub 网站进行身份验证时,我使用相同的选项和服务。
var driver = ChromeDriver(service, options);
driver.Navigate().GoToUrl("https://github.com");
任何帮助将不胜感激!
【问题讨论】:
-
大多数身份验证涉及cookie,每次加载新页面时都需要重新授权。第一次登录如何工作?
-
@JohnPeters 现在这很奇怪,我在调用
driver.Quit之前暂停线程 20 秒,即使使用新的驱动程序实例,它也会让我保持登录状态。 -
是的驱动程序退出取消所有已知状态。您发现即使是新的驱动程序实例也会重用 cookie。将新实例视为新标签也就不足为奇了。
标签: c# selenium selenium-chromedriver