1

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

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

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

也试过了。

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

还有同样的错误。

如果有人对此有解决方案,将不胜感激。

4

4 回答 4

2

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

我正在使用 ChromeDriver win32_2.0,它工作正常。试试那个版本。

于 2013-09-24T14:31:51.993 回答
1

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

例子

第 1 步:单击按钮 //这将导致收到警报

Step-2: //这里需要alert句柄

在步骤 2 中,如果您对驱动程序实例执行任何其他操作,而不是处理警报,它将引发 UnhandledAlertException 异常。

于 2013-09-23T16:43:00.567 回答
0

我在 IE 中遇到了这个问题。但是通过两个简单的更改,它开始像在 FF 下一样工作:
1)正如https://stackoverflow.com/a/20611297/2872258建议的那样,我在创建 IEDriver 时设置了另一个选项 - unexpectedAlertBehaviour=Ignore
2)我也有 WebDriverWait for Alert,一开始就将 ImplicityWait 设置为“0”-根据@Santoshsarma 所说,这是另一个问题。

也可能是 Chrome 的解决方案。

于 2014-03-24T13:52:12.017 回答
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
}
于 2014-10-17T16:16:46.997 回答