【问题标题】:Selenium - Stored Session DataSelenium - 存储的会话数据
【发布时间】:2015-11-10 18:08:36
【问题描述】:

我在整个互联网上进行了搜索,但我找到的答案都没有明确的解决方案。

我在 Java 中使用 selenium webdriver。

我的测试需要验证您何时保存登录信息并关闭浏览器并重新打开它,然后这些凭据仍然存在并保存在新会话中。因此,我想关闭当前会话并重新打开它,以验证 cookie 是否保留在页面上,但是 Selenium 会删除所有存储的会话数据,因此测试用例将始终失败。有什么方法可以防止 Selenium 在关闭特定测试用例的浏览器后删除存储的会话数据?

当我运行它时,我得到一个没有这样的会话错误。

【问题讨论】:

  • 您是否按照此处所述将 Selenium-Server 与 Selenium-WebDriver 一起使用? seleniumhq.org/docs/… 在这种情况下,使用选项运行 Selenium-Server:-browserSessionReuse:在测试之间停止重新初始化和生成浏览器
  • @Würgspaß 不幸的是我没有。
  • 如何在测试代码中关闭会话?你能给我们一个代码sn-p吗?
  • @Würgspaß 我使用 driver.close()。

标签: java selenium selenium-webdriver webdriver


【解决方案1】:

此解决方案适用于 chrome。

当您启动 chrome 时(我认为这同样适用于其他浏览器),selenium 会创建一个临时配置文件,当您关闭它时它会删除它。因此,当您重新启动浏览器时,新配置文件将没有会话信息。您可以做的是使用配置文件。

 DesiredCapabilities desiredCapabilities = DesiredCapabilities.chrome();
 ChromeOptions options = new ChromeOptions();

 options.addArguments("user-data-dir=C:\\Users\\"+System.getenv("USERNAME")+"\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 1");
            desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
 driver = new ChromeDriver(desiredCapabilities);

这样,如果您创建驱动程序,每次启动 chrome 时都会使用相同的配置文件,如果您不这样做

driver.manage().deleteAllCookies();

您的会话信息将保留在 chrome 驱动程序的新会话中。如果您不希望它持续存在,您可以使用上述命令清除 cookie,或者只是简单地注销。这应该可以解决您的问题。类似的事情在其他浏览器中也应该是可能的。

要了解当前使用的配置文件,请在地址栏中输入chrome://version/,它包含当前正在使用的配置文件的信息。想了解更多请看this

【讨论】:

  • @Robben 这有帮助吗?
  • 太棒了。欢迎您!
  • 你必须通过参数driver = new ChromeDriver(options);传递选项
猜你喜欢
  • 2010-12-22
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多