我一直在尝试使用chrome 54.0.2840.87(当前最新的chrome版本)和chromedriver 2.25(当前的最新chromedriver)在Selenium中处理警报,但没有成功。
我确保这是一个警报,而不是一个弹出窗口(没有检查元素选项)。
另外,我通过在处理警报的代码之前放置一个断点来确保没有计时问题,但是它会给出异常:org.openqa.selenium.NoAlertPresentException:没有警报打开
这是我一直尝试使用的代码,但没有成功:driver.switchTo().alert().accept();
还尝试使用代码等待警报出现,但未成功:wait.until(ExpectedConditions.alertIsPresent());
还尝试使用javascript executeScript接受警报,但未成功:((JavascriptExecutor)m_driver).executeScript("window.confirm = function(msg){return true;};");
链接到我收到的警报:
https://i.stack.imgur.com/n8FcE.png
谢谢你的帮助。
最佳答案
这不是警报框。因此,您将无法以传统方式处理它。解决方法是,您可以从Chrome本地状态文件中禁用此协议处理程序框。
对于Windows:
可以在C:\Documents and Settings\<USERNAME>\Local Settings\Application Data\Google\Chrome\User Data
下找到本地状态文件。
编辑“本地状态”文件,并在"caxhost": false,
下添加一行以包含您的协议。
对于Linux:
请从此处执行以下步骤:https://askubuntu.com/questions/465586/how-to-reset-external-protocol-handler-in-chrome