【问题标题】:Selenium with chrome return exception when handling alert处理警报时带有铬的硒返回异常
【发布时间】:2016-11-08 16:40:02
【问题描述】:

我一直在尝试使用 chrome 54.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_driver).executeScript("window.confirm = function(msg){return true;};");

我收到的警报链接: https://i.stack.imgur.com/n8FcE.png

感谢您的帮助。

【问题讨论】:

标签: java selenium-webdriver selenium-chromedriver


【解决方案1】:

这不是警告框。因此,您将无法以传统方式处理它。作为一种解决方法,您可以从 chrome Local State 文件中禁用此协议处理程序框。

对于窗户: 本地状态文件可以在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

【讨论】:

  • 感谢您的回答。如果这不是警报,那是什么?我需要接受此警报才能运行应用程序。有没有一种可靠的方法可以做到这一点?
  • 要了解有关警报框的更多信息,您可以关注en.wikipedia.org/wiki/Alert_dialog_box。您试图绕过的对话框是一种不同类型的弹出窗口,要求您启动不同的应用程序。
  • 在编码术语中 javascript alert() 是弹出对话框的函数。
猜你喜欢
  • 1970-01-01
  • 2011-02-23
  • 2019-04-10
  • 2018-11-10
  • 2021-02-13
  • 2015-06-10
  • 1970-01-01
  • 2017-10-29
  • 2018-08-07
相关资源
最近更新 更多