【问题标题】:How to reuse existing user data directory in Selenium ChromeDriver?如何在 Selenium ChromeDriver 中重用现有的用户数据目录?
【发布时间】: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


【解决方案1】:

我会在第一次登录后尝试保存 cookie,然后在第二次尝试时重新使用它们。而且我不认为 cookie 保存在这个目录中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2019-01-11
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多