一尘不染

如何在Selenium中处理具有“ UnexpectedAlertBehaviour”功能的警报?

selenium

在selenium框架2.25中,我看到我们具有UnexpectedAlertBehaviour枚举类型,但我不知道如何使用它。


阅读 407

收藏
2020-06-26

共1个答案

一尘不染

我发现了有关您的问题的文档的这一部分:这对其他人也可能有用:

v2.25.0

=======

WebDriver:

  • 添加了用于处理BASIC和DIGEST身份验证的API

对话。目前尚未在任何驱动程序中实现。

  • 警告用户IE驱动程序将不再使用DLL中的DLL。

下一个版本。

  • 不推荐使用的浏览器特定的WebElement子类。

  • 向远程Webdriver添加了对“ requiredCapabilities”的支持

并在Firefox中实现了对这些功能的基本支持

司机。未能满足要求的能力将导致

要抛出的SessionNotCreatedException。

  • 增加了确定应如何处理未处理警报的功能。 这由“ unexpectedAlertBehaviour”功能处理,该功能可以是“ accept”,“ dismiss”或“ ignore”之一。Java代码应使用UnexpectedAlertBehaviour枚举。目前仅在Firefox中实现。

  • 允许在Firefox中配置本机事件,并且

(通过实验)在IE中使用“ nativeEvents”功能。

  • 将支持的Firefox版本更新为17。

.....

此处提供整个列表

这里是来源

package org.openqa.selenium;

    public enum UnexpectedAlertBehaviour {

      ACCEPT ("accept"),
      DISMISS ("dismiss"),
      IGNORE ("ignore")
      ;

      private String text;

      private UnexpectedAlertBehaviour(String text) {
        this.text = text;
      }

      @Override
      public String toString() {
        return String.valueOf(text);
      }

      public static UnexpectedAlertBehaviour fromString(String text) {
        if (text != null) {
          for (UnexpectedAlertBehaviour b : UnexpectedAlertBehaviour.values()) {
            if (text.equalsIgnoreCase(b.text)) {
              return b;
            }
          }
        }
        return null;
      }
    }

如我所见,您使用unexpectedAlertBehaviour来确定是否未处理警报,如果是,则将决定如何处理它。

我想应该是这样的(我的假设):

try{
alert.accept();
}

catch(org.openqa.selenium.UnexpectedAlertBehaviour){
///...blablabla
}
2020-06-26