我正面临一个问题,其中我得到一个异常,说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
答案 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);
尝试一下,让我知道是否有任何问题。它对我有用,因为我之前遇到过这个问题。