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

时间:2014-05-27 07:05:15

标签: java javascript firefox selenium

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

  

org.openqa.selenium.UnhandledAlertException:存在模态对话框:   此页面要求您确认是否要离开 - 为您提供数据   已输入可能无法保存。建立信息:版本:'2.41.0',修订版:   '3192d8a6c4449dc285928ba024779344f5423c58',时间:'2014-03-27   11:29:39系统信息:主持人:'NCESEPBLRNRE16',ip:'172.16.137.213',   os.name:'Windows XP',os.arch:'x86',os.version:'5.1',   java.version:'1.6.0_26'Session ID:   bda22089-a586-4cd8-b7ac-778c98581e11驱动信息:   org.openqa.selenium.firefox.FirefoxDriverCapabilities [{platform = XP,   acceptSslCerts = true,javascriptEnabled = true,browserName = firefox,   rotate = false,locationContextEnabled = true,version = 23.0,   cssSelectorsEnabled = true,databaseEnabled = true,handlesAlerts = true,   browserConnectionEnabled = true,nativeEvents = false,   webStorageEnabled = true,applicationCacheEnabled = true,   takeScreenshot = true}] at   sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)   在   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)   在   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)   在java.lang.reflect.Constructor.newInstance(Constructor.java:513)at   org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)   在   org.openqa.selenium.remote.ErrorHandler.createUnhandledAlertException(ErrorHandler.java:174)   在   org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:141)   在   org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)   在   org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348)   在   org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:389)   在org.openqa.selenium.By $ ById.findElement(By.java:214)at   org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340)   在   com.amadeus.selenium.runner.SEPWebDriverWrapper.findElement(SEPWebDriverWrapper.java:141)

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

  

//现在出现警报。警报警报= driver.switchTo()。alert();   alert.accept();

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

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

我使用Selenium Java和浏览器作为Firefox

2 个答案:

答案 0 :(得分:5)

写一个这样的方法:

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

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

if(isAlertPresent()){
            System.out.println(isAlertPresent());
            driver.switchTo().alert().accept();
        }

答案 1 :(得分:0)

这可以通过结合使用机械手类和硒警报开关来解决。

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

尝试一下,让我知道是否有任何问题。它对我有用,因为我之前遇到过这个问题。