Java 处理警报时,Selenium和chrome返回异常

Java 处理警报时,Selenium和chrome返回异常,java,selenium-webdriver,selenium-chromedriver,Java,Selenium Webdriver,Selenium Chromedriver,我一直在尝试使用Chrome54.0.2840.87(当前最新的chrome版本)和chromedriver 2.25(当前最新的chromedriver)处理Selenium中的警报,但没有成功。 我已经确保这是一个警报,而不是一个弹出窗口(没有检查元素选项) 此外,我还通过在处理警报的代码之前放置一个断点来确保没有时间问题,但它给出了异常:org.openqa.selenium.NoAlertPresentException:no alert open 这是我一直尝试使用的代码,但没有成功:

我一直在尝试使用Chrome54.0.2840.87(当前最新的chrome版本)和chromedriver 2.25(当前最新的chromedriver)处理Selenium中的警报,但没有成功。 我已经确保这是一个警报,而不是一个弹出窗口(没有检查元素选项)

此外,我还通过在处理警报的代码之前放置一个断点来确保没有时间问题,但它给出了异常:org.openqa.selenium.NoAlertPresentException:no alert open

这是我一直尝试使用的代码,但没有成功:
driver.switchTo().alert().accept()

还尝试使用代码等待警报出现,但未成功:
wait.until(ExpectedConditions.alertIsPresent())

还尝试使用javascript executeScript接受警报,但未成功:

((JavascriptExecutor)m_驱动程序).executeScript(“window.confirm=function(msg){return true;};”;

链接到我收到的警报:


谢谢您的帮助。

这不是警报框。所以你不能用传统的方式处理它。作为一种解决方法,您可以从chrome本地状态文件中禁用此协议处理程序框

适用于windows: 本地状态文件可以在
C:\Documents and Settings\\local Settings\Application Data\Google\Chrome\User Data
下找到

编辑“本地状态”文件,并在
“caxhost”:false,
下添加一行以包含您的协议

对于linux:
按照此处的步骤操作:

这不是警报框。所以你不能用传统的方式处理它。作为一种解决方法,您可以从chrome本地状态文件中禁用此协议处理程序框

适用于windows: 本地状态文件可以在
C:\Documents and Settings\\local Settings\Application Data\Google\Chrome\User Data
下找到

编辑“本地状态”文件,并在
“caxhost”:false,
下添加一行以包含您的协议

对于linux:
按照此处的步骤操作:

可能重复的可能重复的可能重复的感谢您的回答。如果这不是警报,那么是什么?我需要接受此警报才能运行应用程序。是否有一种可靠的方法可以做到这一点?要了解更多有关警报框的信息,您可以按照。您试图绕过的对话框是另一种弹出窗口,要求您启动不同的应用程序。用编码术语来说,javascript
alert()
是弹出对话框的函数。谢谢您的回答。如果这不是警报,那么是什么?我需要接受此警报才能运行应用程序。是否有一种可靠的方法可以做到这一点?要了解更多有关警报框的信息,您可以按照。您试图绕过的对话框是另一种弹出窗口,要求您启动不同的应用程序。在编码术语中,javascript
alert()
是弹出对话框的函数。