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

hoa*_*yen 4 java selenium

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

eug*_*kov 9

我在你的问题上找到了这部分文档:这对其他人也有用:

v2.25.0

=======

的webdriver:

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

    对话框.目前未在任何驱动程序中实现.

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

    下一个版本.

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

  • 添加了对"requiredCapabilities"的支持到远程webdrivers

    并在firefox中实现了对这些的基本支持

    驱动程序.未能满足所需的能力将导致a

    要抛出的SessionNotCreatedException.

  • 添加了确定应如何处理未处理警报的功能.这由"unexpectedAlertBehaviour"功能处理,该功能可以是"接受","解雇"或"忽略"之一.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;
      }
    }
Run Code Online (Sandbox Code Playgroud)

我看到你使用unexpectedAlertBehaviour来判断警报是否未处理,如果是,那么你将决定如何处理它.

我想它应该是(我的假设):

try{
alert.accept();
}

catch(org.openqa.selenium.UnexpectedAlertBehaviour){
///...blablabla
}
Run Code Online (Sandbox Code Playgroud)

  • 我不这么认为.实际上,UnexpectedAlertBehaviour不是alert.accept()抛出的异常. (3认同)