Java 未处理的警报异常:存在模态对话框(Selenium)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23883071/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Unhandled Alert Exception : Modal Dialog Present (Selenium)
提问by Vigneshwaran
I am facing an Issue wherein I get an Exception saying UnhandledAlertException Modal Dialog Present ,below are some of the traces
我面临一个问题,其中我收到一个异常说 UnhandledAlertException Modal Dialog Present,下面是一些跟踪
org.openqa.selenium.UnhandledAlertException: Modal dialog present: This page is asking you to confirm that you want to leave - data you have entered may not be saved.Build info: version: '2.41.0', revision: '3192d8a6c4449dc285928ba024779344f5423c58', time: '2014-03-27 11:29:39'System info: host: '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-778c98581e11Driver info: org.openqa.selenium.firefox.FirefoxDriverCapabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=23.0, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193) at org.openqa.selenium.remote.ErrorHandler.createUnhandledAlertException(ErrorHandler.java:174) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:141) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348) at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:389) at org.openqa.selenium.By$ById.findElement(By.java:214) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340) at com.amadeus.selenium.runner.SEPWebDriverWrapper.findElement(SEPWebDriverWrapper.java:141)
org.openqa.selenium.UnhandledAlertException:模态对话框存在:此页面要求您确认要离开 - 您输入的数据可能不会被保存。构建信息:版本:'2.41.0',修订版:'3192d8a6c4449dc285928ba024779344c8542 ,时间:'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-778c98581e11Driver info: org.openqa.selenium.firefox.FirefoxDriverCapabilities [{platform=XP, acceptSslC =true,browserName=firefox,rotatable=false,locationContextEnabled=true,version=23.0,cssSelectorsEnabled=true,databaseEnabled=true,handlesAlerts=true,browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true,takesScreenshot=true}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun .reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193) at 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$ById.findElement(By) java:214) 在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340) 在 com.amadeus.selenium.runner.SEPWebDriverWrapper.findElement(SEPWebDriverWrapper.java:141)
I searched for some solutions and got the following snippet to handled the issue
我搜索了一些解决方案并得到了以下代码段来处理这个问题
//Now the alert appears. Alert alert = driver.switchTo().alert(); alert.accept();
//现在出现警报。警报 alert = driver.switchTo().alert(); 警报。接受();
It works fine , but the alert popup appears in different instances (or different scenarios ) for which the alert cannot be handled in all blocks of code
它工作正常,但警报弹出窗口出现在无法在所有代码块中处理警报的不同实例(或不同场景)中。
Please let me know if there is any common approach wherein i can disable this alert popup permanently through some firefox profile settings or anyother generic approaches
请让我知道是否有任何通用方法可以通过某些 Firefox 配置文件设置或任何其他通用方法永久禁用此警报弹出窗口
I am using Selenium Java with browser as Firefox
我在浏览器中使用 Selenium Java 作为 Firefox
回答by Ripon Al Wasim
Write a method like this:
写一个这样的方法:
protected boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
Call the above method to verify whether alert is present or not as below:
调用上面的方法来验证警报是否存在,如下所示:
if(isAlertPresent()){
System.out.println(isAlertPresent());
driver.switchTo().alert().accept();
}