【问题标题】:Java, Selenium & Firefox Driver - driver.switchTo().alert() hangs on alert dialog. why?Java、Selenium 和 Firefox 驱动程序 - driver.switchTo().alert() 挂在警报对话框上。为什么?
【发布时间】:2015-05-05 22:48:05
【问题描述】:

场景:selenium、java、firefox 和警报 所以,我写了一些时间回溯代码来处理抓取网站时的警报。

这种代码在搜索 selenium 和 alerts 时很容易找到..

    try {
        Alert alert = driver.switchTo().alert();
        alert.accept();
    } catch (NoAlertPresentException e) {
        LOGGER.debug("No alert available: " + url);
    }

这似乎适用于我拥有的几个测试用例。一个是 tomcat 主页,例如,如果您单击“状态”,则会在其上弹出一个窗口。

现在我遇到了一个阻止上述代码的对话框。 switchTo() 返回一个 TargetLocator,但该定位器上的 alert() 会阻塞并且永远不会返回。

触发该对话框的链接是http://www.fcb.com/news/rss

另外,在this 帖子上,我发现一条评论说“我们无法处理在 onload 函数上创建的确认框”我想知道这是什么意思,但我的声誉太低了,我无法发表评论然而:)。

此外,正如第一个答案中所指出的,有问题的对话和有效的对话都是“身份验证”警报。我不想认证。

所以,回顾一下,问题是为什么 TargetLocator.alert() 调用会阻塞?我的最终目标是关闭在 driver.get(url) 之后可能遇到的任何此类对话框。

有什么想法吗?

谢谢 克里斯蒂安

附言关于重复标签,我认为它不是重复的。那里建议的代码也不起作用。我的问题的主要目标之一是了解为什么此弹出窗口会阻止调用 alert()

【问题讨论】:

标签: selenium selenium-webdriver alert


【解决方案1】:

根据您提供的链接http://www.fcb.com/news/rss,在导航到此时,它会显示身份验证弹出窗口。它不是警报,这就是您面临问题的原因..

检查这个:Handling Browser Authentication using Selenium

如果不是您要找的,请解释问题,因为我无法发表评论以获得更多解释。

谢谢你, 壁画

【讨论】:

  • 对,这是一个身份验证弹窗。但我认为它会被检测为“警报”。我不在乎在该页面上进行身份验证。我只想关闭它,克服它。您引用的链接也将此类对话框称为警报。
  • @Cristian HTTP 身份验证弹出窗口不能直接用 selenium 操作,它不是 selenium 术语的警报。
  • @Cristian:然后您可以使用 selenium 中的 keyevents 或 Java 中的 Robot 类来模拟转义以避免该身份验证弹出。我希望通过转义,如果不使用适当的键,弹出窗口将会消失..
  • @alecxe:但另一个身份验证弹出窗口,至少在外观方面非常相似,被 Selenium 检测为警报。例如,我在谈论 tomcat 的经理。在默认安装的 tomcat 上,如果你尝试 localhost:8080/manager,你会得到身份验证弹出窗口。 Selenium 将其检测为警报。此外,这个 SO 链接 (stackoverflow.com/questions/24304752/…) 谈到了使用 Selenium 处理身份验证弹出窗口,并且代码中有一个警报
  • @muraliseleniumtrainer,谢谢,我可能要试试 Robot 或者 Autoit。我只是想了解 2 个类似的身份验证弹出窗口之间的区别:一个被检测为警报,另一个来自 fcb,在我提到的呼叫上挂起
猜你喜欢
  • 2022-11-29
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
相关资源
最近更新 更多