【问题标题】:Selenium drivers don't remember user authenticationSelenium 驱动程序不记得用户身份验证
【发布时间】:2013-03-04 03:29:40
【问题描述】:

我正在测试的应用程序需要使用用户的 Google 帐户登录。每次我登录时,它都会显示/要求我选择“允许访问”按钮,就好像它不记得我已经将它添加到我的 Google 帐户的授权访问列表中一样。这在我手动测试时不会发生,只有在我运行 Selenium 时才会发生。有没有人遇到过这样的问题或知道解决方案?提前致谢。

WebDriver driver = selenium_driver.get(); // using chrome driver 
baseUrl = defaults.getProperty("base_url"); // this is set to my localhost 
helper.ConnectToURL(baseUrl);

当这种情况开始发生时,我一直在使用 Selenium 2.28.0——从那时起,我已经更新到 2.31.0,但它表现出相同的行为。

【问题讨论】:

  • 发布您使用的浏览器启动代码。
  • 由于这是由于删除 cookie 造成的,因此一种临时解决方法可以是……对所有测试用例执行使用相同的浏览器实例。将其重用于所有需要 Google 帐户身份验证的下一个测试用例。
  • @Manigandan:当然,刚刚添加到原始帖子中。谢谢。

标签: authentication selenium selenium-webdriver


【解决方案1】:

免责声明:根据 ChromeDriver wiki,这目前是不可能的。它在“已知问题”部分“无法指定自定义配置文件”中说明。 (https://code.google.com/p/selenium/wiki/ChromeDriver)

在修复后的某个时候,我建议创建或使用默认的 chrome 配置文件,该配置文件具有您的授权访问集,您的测试在启动时使用该配置文件。

根据 ChromeDriver wiki:“默认情况下,ChromeDriver 将为每个会话创建一个新的临时配置文件”。

查看此帖子以获取有关功能的更多详细信息:http://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches

我在 .NET 和 Windows 中工作;我的设置看起来像这样:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("start-maximized");
chromeOptions.AddArgument("user-data-dir=C:\\Users\\username\\AppData\\Local\\Google\\Chrome\\User Data\\Default");
capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(ChromeOptions.Capability, chromeOptions);
ChromeDriver chromeDriver= new ChromeDriver(this.Environment.ChromeDriverLocation, chromeOptions);

如果您不限于使用 Chrome 进行测试,您可以使用 Firefox 创建和使用自定义配置文件。

【讨论】:

  • 哦,有趣!问题是这种情况以前从未发生过——我能够通过 Selenium 登录,而无需每次都授予访问权限。这是一个较新的问题吗?
  • 我不能肯定地说。我主要使用自定义配置文件在 Firefox 中进行测试,因此我不会收到安全证书警报。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 2017-11-11
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
相关资源
最近更新 更多