【问题标题】:Microsoft Edge clean sessionMicrosoft Edge 清理会话
【发布时间】:2019-11-28 21:43:29
【问题描述】:

Microsoft Edge 驱动程序在运行 selenium 测试时无法确保干净的会话。我可以指定一个选项来解决此问题吗?

【问题讨论】:

  • 您所说的“干净的会话”是什么意思?如果您正在谈论存储在边缘的 cookie,那么您可以使用 driver.manage().deleteAllCookies(); 清理它们
  • 我想清除缓存、cookie 和历史记录。在 IE 中,您只需在 desiredCapabilities 中指定属性 ie.ensureCleanSession = true 即可完成
  • 注意:driver.manage().deleteAllCookies() 不适用于 Release 14393 MS edge Win 10 Sel 3.1.0
  • @Kozi,它可以工作,但首先你需要打开一个页面。见:developer.microsoft.com/en-us/microsoft-edge/platform/issues/…
  • @André 它适用于本地主机吗?从本地主机打开页面后,它不会删除 cookie。

标签: selenium selenium-webdriver microsoft-edge


【解决方案1】:

今天我自己就遇到了这个问题,所以我让它工作的唯一方法最终很简单。您必须在 Edge 设置中选中“关闭浏览器时始终清除此内容”(并选择您要清除的内容)。

使用该设置,您将在每次新驱动程序初始化时都有干净的会话:)

【讨论】:

    【解决方案2】:

    另一种解决方案是在私有模式下打开 Edge(至少解决了我在会话和清除 cookie 方面的问题):

    EdgeOptions options = new EdgeOptions();
    options.AddAdditionalCapability("InPrivate", true);
    this.edgeDriver = new EdgeDriver(options);
    

    【讨论】:

      【解决方案3】:

      根据我的经验,在 Edge 中实现干净会话的唯一方法是随时构建它。我的意思是,您必须清除 cookie 并在必要时重新加载屏幕。

      一个例子是一个登录屏幕,它导航到一个登录页面,并在加载后约 1-3 秒到达一个弹出窗口。

      • Edge 登录页面通常不会注销之前的测试用户,因此如果 Browser=Edge,则在这些测试步骤开始时通常需要注销。

      • 这一切在本地第一次发生时,驱动程序会看到弹出窗口,将其关闭,并创建一个 cookie,以防止弹出窗口触发下一次测试。

      我不了解您的测试框架,但我在从一个页面移动到另一个页面时使用 ConfirmOnThisPage() 方法。因此,一旦我知道页面已加载,我可以通过调用 DeleteCookie(Cookie cookie) 函数轻松处理即将在此处测试的 cookie,该函数包含来自我的页面确认方法中的页面刷新。我使用以下内容:

      public IWebDriver DeleteCookie(Cookie cookie){
          driver.Manage().Cookies.DeleteCookieNamed(cookie);
          driver.Navigate().Refresh(); 
          return driver;
      }
      

      【讨论】:

        猜你喜欢
        • 2017-06-30
        • 2015-07-05
        • 2015-03-13
        • 1970-01-01
        • 1970-01-01
        • 2020-07-07
        • 2012-04-19
        • 2010-10-13
        • 2015-11-10
        相关资源
        最近更新 更多