当前位置: 首页 > 知识库问答 >
问题:

未处理的警报异常:存在模式对话框(Selenium)

郗福
2023-03-14

我面临一个问题,其中我得到一个异常说UnhandledAlertException模态对话框存在,下面是一些痕迹

组织。openqa。硒。未处理的AlertException:存在模式对话框:此页面要求您确认是否要离开-您输入的数据可能不会保存。构建信息:版本:“2.41.0”,版本:“3192D8A6C4449DC285928BA02479344F5423C58”,时间:“2014-03-27 11:29:39”系统信息:主机:“NCESEPBLRNRE16”,ip:“172.16.137.213”,操作系统。名称:“Windows XP”,操作系统。arch:“x86”,操作系统。版本:“5.1”,java。版本:“1.6.0\u 26”会话ID:bda22089-a586-4cd8-b7ac-778C98581E11驱动程序信息:org。openqa。硒。firefox。FirefoxDriverCapabilities[{平台=XP,acceptSslCerts=true,javascriptEnabled=true,browserName=firefox,rotatable=false,locationContextEnabled=true,版本=23.0,CSSSElectorEnabled=true,databaseEnabled=true,handlesAlerts=true,browserConnectionEnabled=true,nativeEvents=false,WebStorage=true,applicationCacheEnabled=true,takesScreenshot=true}]。反映NativeConstructorAccessorImpl。sun上的newInstance0(本机方法)。反映NativeConstructorAccessorImpl。sun上的newInstance(NativeConstructorAccessorImpl.java:39)。反映授权ConstructorAccessorImpl。java上的newInstance(DelegatingConstructorAccessorImpl.java:27)。lang.reflect。构造函数。org上的newInstance(Constructor.java:513)。openqa。硒。遥远的ErrorHandler。在org上创建throwable(ErrorHandler.java:193)。openqa。硒。遥远的ErrorHandler。在org上创建UnhandledAlertException(ErrorHandler.java:174)。openqa。硒。遥远的ErrorHandler。throwIfResponseFailed(ErrorHandler.java:141)位于org。openqa。硒。遥远的RemoteWebDriver。在org上执行(RemoteWebDriver.java:595)。openqa。硒。遥远的RemoteWebDriver。位于org的findElement(RemoteWebDriver.java:348)。openqa。硒。遥远的RemoteWebDriver。findElementById(RemoteWebDriver.java:389)位于org。openqa。硒。按$ById。findElement(By.java:214)位于org。openqa。硒。遥远的RemoteWebDriver。com上的findElement(RemoteWebDriver.java:340)。阿马迪斯。硒。跑步者SepWebDriverRapper。findElement(sepWebDriverRapper.java:141)

我搜索了一些解决方案,得到了以下代码片段来处理这个问题

//现在,警报出现。Alert Alert=驾驶员。切换到()。警报();警觉的accept();

它工作正常,但警报弹出窗口出现在不同的实例(或不同的场景)中,无法在所有代码块中处理警报

请告诉我是否有任何常用方法,我可以通过一些firefox配置文件设置或任何其他通用方法永久禁用此警报弹出窗口

我正在使用Selenium Java和Firefox浏览器

共有2个答案

姚星宇
2023-03-14

这可以通过使用Robot类和selenium Alert switch to command的组合来解决。

driver.switchTo().alert();
// invoke Robot class
Robot rb = new Robot();
rb.KeyPress(KeyEvent.VK_ENTER);
rb.KeyPress(KeyRelease.VK_ENTER);

试试这个,让我知道,如果有任何问题。它对我有用,因为我之前遇到过这个问题。

霍建章
2023-03-14

编写如下方法:

protected boolean isAlertPresent() {
        try {
          driver.switchTo().alert();
          return true;
        } catch (NoAlertPresentException e) {
          return false;
        }
      }

调用上述方法验证警报是否存在,如下所示:

if(isAlertPresent()){
            System.out.println(isAlertPresent());
            driver.switchTo().alert().accept();
        }
 类似资料:
  • 目标:弹出警报。无论它是否显示,我希望它继续。如果显示,则必须选中复选框,然后单击“继续”。如果没有,忽略它。 拦截器:如果警告显示,它将处理的行动和对话将被关闭。但当它不是,硒挂在那里,没有处理条件,当它不显示。 背景:我以前使用过UFT,也许我的逻辑可能是错误的。弹出窗口是应用程序警报(不是系统),因此假设“切换到(),accept()/dismise()将不起作用。我将在登录后立即在下面的登

  • 我正在使用新的JavaFX Alert类(Java1.8_40),并尝试在exibition文本中使用HTML标记,但到目前为止还没有成功。下面是我正在尝试做的一个例子。 有没有人知道这是不是真的可能,给我举个例子? 提前道谢。

  • 在我的应用程序中,当我试图显示自定义的框时,它在android手机中运行良好。现在,当我在android选项卡上安装应用程序时,一切都很好,只有自定义框有问题。不显示。所以我想,我应该检查正常对话框,它工作正常。下面是普通对话框和警报对话框的代码。

  • 正如我们从API 14知道的,下面的模糊已经被弃用 有没有其他方法可以使屏幕模糊我已经尝试过快速模糊

  • 问题内容: 这是一种常见的模式,我看到与异常关联的错误代码存储为静态最终整数。当创建要抛出的异常时,将使用这些代码之一以及错误消息来构造该异常。这导致该方法要抓住它,必须先查看代码,然后决定采取的措施。 替代方法似乎是-为每个异常错误情况声明一个类(尽管相关的异常会从通用基类中删除) 有中间立场吗?推荐的方法是什么? 问题答案: 这是一个很好的问题。我相信绝对有中间立场。 我认为错误代码对于显示质

  • 我在antoher的项目中有完全相同的代码,但它在这里继续崩溃。我有。我真的不确定问题出在哪里。我尝试过切换gradle版本,从切换到。不管怎样,一切都失败了