【发布时间】:2014-07-15 23:47:50
【问题描述】:
我面临一个问题,其中我收到一个异常说 UnhandledAlertException Modal Dialog Present ,下面是一些跟踪
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'会话 ID: bda22089-a586-4cd8-b7ac-778c98581e11驱动信息: org.openqa.selenium.firefox.FirefoxDriverCapabilities [{平台=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, 可旋转=false,locationContextEnabled=true,版本=23.0, cssSelectorsEnabled=true,databaseEnabled=true,handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, 需要屏幕截图 = true}] 在 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) 在 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) 在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340) 在 com.amadeus.selenium.runner.SEPWebDriverWrapper.findElement(SEPWebDriverWrapper.java:141)
我搜索了一些解决方案并得到了以下sn-p来处理问题
//现在警报出现了。警报警报 = driver.switchTo().alert(); alert.accept();
它工作正常,但是警报弹出窗口出现在不同的实例(或不同的场景)中,在所有代码块中都无法处理警报
请让我知道是否有任何常用方法,我可以通过一些 Firefox 配置文件设置或任何其他通用方法永久禁用此警报弹出窗口
我正在使用 Selenium Java 和 Firefox 浏览器
【问题讨论】:
-
我会建议按照预期的行为处理警报,而不是到处禁用它们。
-
感谢您的回复,但问题是 AlertPopup 的出现并非始终在同一个实例中,您想到了任何设置,其中 firefoxprofile 可以像下载窗口弹出一样永久禁用它
-
您肯定知道警报什么时候出现,什么时候不出现?这是你的网站,对吧?您知道应用程序实际上做了什么,对吧?
-
我已经看到了在不同情况下发生的警报弹出窗口,尽管我能够在一个实例中使用 Alert alert = driver.switchTo().alert(); 来处理警报。警报.accept(); 。所以只是为了确保它不会出现在不同的场景中,我觉得如果我们永久禁用它会更好。 Tas 我要问是否有永久禁用它的原因
-
如果你在你拥有的接受警报代码周围使用 try/catch,然后不做任何事情,除非它会尝试在你需要的任何地方关闭弹出窗口,但如果弹出窗口不是你的测试不会出错。不是最佳做法,但取决于您的目标,它可能会奏效。
标签: java javascript firefox selenium