【问题标题】:selenium cant close MS edge after prompting a downloadselenium 提示下载后无法关闭 MS edge
【发布时间】:2018-05-15 05:19:55
【问题描述】:

编写自动化测试,我需要触发下载。 单击按钮下载,运行良好,所有其他断言通过。 问题是当我调用browser.end() 时,edge 不允许 selenium 关闭浏览器,因为有一个对话框说有一个下载挂起并等待确认。 是否有允许 selenium 关闭此“下载待处理”对话框的标志或功能?

我试过了

edge: {
  desiredCapabilities: {
    browserName: "edge",
    browser_version: "16.0",
    unhandledPromptBehavior: "accept",
  },

【问题讨论】:

  • 该代码 sn-p 不运行。它甚至不是有效的 Json。见mvce

标签: selenium microsoft-edge nightwatch.js


【解决方案1】:

这里有几件事要讨论,所以让我稍微解开一下。

  1. 是否存在未处理的警报提示处理程序? 在 WebDriver 的 W3C 规范中有这样的配置,但是 Edge 当前不支持此配置,即使它提供了您在此处描述的提示,也不是提示/警报/确认,而是浏览器 UX 提示。这意味着页面本身无法控制它,WebDriver 也无法控制。

  2. WebDriver 是否应该在下载完成之前从导航返回到下载链接? 如果您比较 Firefox/Chrome/Edge,您会注意到 Firefox/Edge 不会从更大的下载导航返回,而 Chrome 会。这里的规范不清楚,所以我提出了以下问题来讨论:https://github.com/w3c/webdriver/issues/1244

  3. 删除会话命令是否应该取消任何正在进行的下载并关闭任何关于取消这些下载的浏览器 UX,然后关闭浏览器? 这是规范中需要澄清的另一个灰色区域。如果他们对下载完成的时间有一些估计以验证它是否是正确的二进制文件,那么对于进行浏览器外验证的开发人员来说,这可能会很有用。验证下载是否发生然后取消它也很有用。

一旦规范问题被讨论并解决,浏览器供应商将努力解决确定的修复问题。

【讨论】:

    【解决方案2】:

    如果不需要验证提示,建议更改浏览器中的设置不问即可下载:

    1. 打开 Microsoft Edge 应用。
    2. 点击右上角的更多操作按钮,然后点击设置。
    3. 单击查看高级设置。
    4. 在“下载”下,关闭每次下载都询问我如何处理,以获取您想要的内容。

    另外,您可以尝试将此功能添加到您的框架中:

    UnhandledAlertException可能的值是“accept”、“dismiss”和“ignore”

    【讨论】:

      猜你喜欢
      • 2022-08-23
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      相关资源
      最近更新 更多