SeleniumException:错误:出现意外警报!

时间:2009-09-09 23:40:05

标签: java eclipse internet-explorer-7 junit selenium

我在针对IE7运行selenium RC测试时遇到此错误。

com.thoughtworks.selenium.SeleniumException:错误:出现意外警报! [错误:[对象错误]]

只要我尝试点击链接或标签或任何可点击的内容,就会发生这种情况。任何想法的家伙。这真是令人沮丧。

6 个答案:

答案 0 :(得分:4)

检查Google search results for your error messagethe selenium development mailing list,听起来好像这不是Selenium中的错误,而是Selenium告诉您在网络中调用了意外的window.alert()函数应用程序,Selenium不知道如何处理它,因为你没有告诉它如何。

答案 1 :(得分:2)

如果在其他浏览器中没有出现同样的问题,我会感到惊讶。也许您的应用程序根据浏览器的不同而有所不同?基本上Selenium报告说,在您点击这些链接或标签后,它无法转移到其他命令,因为它已检测到意外的JavaScript警报。您不会看到这些警报,因为Selenium会消耗它们。您可以采取一些措施来解决发生的事情。

我建议的第一件事就是在IE7中检查您的应用程序。手动完成测试步骤 - 您是否看到了JavaScript警报?如果是这样,您需要在Selenium测试中添加适当的命令。

如果由于某种原因您无法手动复制警报,您可以使用getAlert命令关闭警报,或使用getAlert的响应来查找意外警报的文本。

用于查找警报消息的Java / TestNG示例:

assertEquals(selenium.getAlert(), "Hello World");

以上情况仍然会导致您的测试失败(除非警报确实说'Hello World'),但是会失败并显示类似于“预期'Hello World'但是'您的意外警报消息'”的消息。 / p>

答案 2 :(得分:1)

我得到了类似的东西 IE中没有错误,Chrome中的JS错误弹出,FF中没有任何内容......直到我运行我的Selenium脚本并报告意外错误。 有趣的是当我做selenium.IsAlertPresent()它返回false,即使它说有一个。

答案 3 :(得分:0)

我看到了同样的错误。通常我们使用C#运行测试,但在这种情况下,我们使用Selenium IDE设置一些简单的测试。

由于Selenium IDE会记录您的事件,然后允许您播放它们,因此您可以预期它会处理警报。当查看它记录的事件时,它正在捕获警报。但是,当你播放它时,事件就会发生故障。

首先它捕获click事件。然后使用assertAlert确保发生警报。

播放时会出现问题。它执行click事件然后出错。如果在click事件之前移动assertAlert语句则不起作用。如果将assertAlert更改为waitForAlert也不起作用。无论如何,我似乎无法弄清楚在Selenium IDE中播放是否正常工作。如果我不需要这种非技术性的运行,我只需将它放入我的常规测试中并完成它。

编辑:进一步检查后,警报消息显示不匹配。即使它在记录时抓住了警报本身。视觉检查没有做任何事情来帮助我确定它认为不同的东西。

答案 4 :(得分:0)

我也看到了这个错误。在我的例子中,问题是Ajax响应对象的延迟导致Selenium IDE错误。对我有用的解决方案是在测试脚本中的任何Ajax调用之后立即添加暂停命令。

以下调用需要几秒钟才能返回有效的Ajax响应          点击     css =#form3> div.addButton> button.btn.btn基色          

通过添加暂停子句,解决了“意外警报”问题          暂停     5000          

答案 5 :(得分:0)

我建议您手动测试硒测试中的那些步骤。如果它不可重复,那么它可能不是页面中的问题。 请使用断言功能调试您的selenium脚本,以确定它在何处找到意外警报。

 if (selenium.isAlertPresent()) {
assertEquals(selenium.getAlert(), "Hello World");

}

这将帮助您确定问题。我建议你重复测试,因为你可能会发现断言发生在代码的不同部分。