处理Chrome驱动程序上的警报Windows(Webdriver)

时间:2013-09-23 15:54:29

标签: java google-chrome selenium webdriver

我无法处理来自Chrome的ALert弹出窗口,我不断收到以下错误。 org.openqa.selenium.UnhandledAlertException:意外警报打开   (会话信息:chrome = 29.0.1547.66)   (驱动程序信息:chromedriver = 2.3,platform = Windows NT 5.1 SP3 x86)。

这是我到目前为止所尝试的内容。当我到达显示错误的页面时:

driver.switchTo().alert.accept(); 

也试过了。

 Alert alert = driver.switchTo().alert();
 alert.accept();

也是同样的错误。

如果有任何解决方案,我们将不胜感激。

4 个答案:

答案 0 :(得分:1)

实际上,如果您没有正确处理警报,则会出现(UnhandledAlertException)否则,如果您在关闭警报之前对驱动程序实例执行任何操作。

实施例

步骤1:点击按钮//这将导致获得提醒

步骤2://这里需要提醒句柄

在步骤2中,如果对驱动程序实例执行任何其他操作,则不会处理警报,而是会抛出UnhandledAlertException异常。

答案 1 :(得分:1)

可能是您的ChromeDriver版本。我不建议总是更新到最新版本的东西。缺陷比比皆是。

我正在使用ChromeDriver win32_2.0,它运行正常。 Try that version.

答案 2 :(得分:0)

我在IE中遇到了这个问题。但是通过两个简单的改变,它开始像FF一样工作:
1)按照建议https://stackoverflow.com/a/20611297/2872258我在创建IED驱动程序时设置了另一个选项 - unexpectedAlertBehaviour =忽略
2)我还有WebDriverWait for Alert,将ImplicityWait设置为" 0"在一开始 - 根据@Santoshsarma说这是另一个问题。

可能也是Chrome的解决方案。

答案 3 :(得分:0)

我尝试捕获stackoverflow错误,它对我来说是一种解决方法。

try
{   
    driver.findElement(By.xpath('xpath')).click(); // command that will trigger the alert window
}
catch (StackOverflowError e)
{
    driver.switchTo().alert().dismiss(); // or driver.switchTo().alert().accept();
    // the rest of the scripts can be added here
}