selenium cant在提示下载后关闭MS边缘

时间:2018-03-20 23:49:52

标签: selenium microsoft-edge nightwatch.js

编写自动化测试,我需要触发下载。 单击按钮进行下载,运行正常,所有其他断言都通过。 问题是,当我调用browser.end()时,边缘将不允许selenium关闭浏览器,因为有一个对话框说有一个待处理的下载并且正在等待确认。 是否有一个标志或能力允许selenium解雇这个“下载待定”对话框?

我试过

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

2 个答案:

答案 0 :(得分:0)

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

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

  2. WebDriver应该在下载完成之前从导航返回到下载链接吗? 如果您比较Firefox / Chrome / Edge,您会注意到Firefox和Edge不会从Chrome更大的下载导航返回。此处的规范不明确,因此我提出以下问题进行讨论:https://github.com/w3c/webdriver/issues/1244

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

  4. 一旦规范问题得到讨论并在浏览器上得到解决,供应商就会采取任何确定的解决方案。

答案 1 :(得分:0)

如果不需要验证提示,我建议您更改浏览器中的设置,不要询问:

  1. 打开Microsoft Edge应用程序。
  2. 点击右上角的更多操作按钮,然后点击设置。
  3. 点击查看高级设置。
  4. 在“下载”下,关闭 始终询问我如何处理每次下载 以获取所需内容。
  5. 此外,您可以尝试将此功能添加到您的框架中:

    UnhandledAlertException 哪些可能的值为“accept”,“dismiss”和“ignore”