2009-09-09 219 views
4

我在对IE7运行硒RC测试时出现此错误。SeleniumException:错误:出现意外警报!

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

每当我尝试点击链接或选项卡或任何可点击时,都会发生这种情况。任何想法家伙。这真令人沮丧。

+0

粘贴您的测试代码。 – Santi 2009-09-10 06:35:56

回答

2

如果在其他浏览器中没有发生相同的问题,我会感到惊讶。根据浏览器的不同,应用程序的行为可能有所不同基本上Selenium报告说,在你点击这些链接或标签后,它不能移动到更多的命令上,因为它检测到一个意外的JavaScript警报。您不会看到这些警报,因为硒会消耗它们。有几件事你可以做,以了解发生了什么事。

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

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

的Java/TestNG的例子以找出警报的消息:

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

以上仍然会导致测试失败(除非警报确实说的“Hello World”),但是无法与类似于“预期'Hello World'的消息,但是'您的意外警报消息'”。

0

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

由于Selenium IDE会记录您的事件,然后允许您播放它们,因此您希望它能够处理警报。在查看它记录的事件时,它显示它正在捕获警报。但是,当您播放它时,事件无序。

首先它捕获点击事件。然后是使用assertAlert来确保发生警报。

回放时出现问题。它执行点击事件,然后出错。如果在单击事件之前移动assertAlert语句,则不起作用。如果将assertAlert更改为无效的waitForAlert。我似乎无法弄清楚在Selenium IDE中播放工作。如果我不需要这个可运行的非技术,我只是把它放到我的常规测试中,并完成它。

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

+0

''click()''之前'storeAlert(dummy_variable)'似乎对我最有效。 – Kev 2010-08-11 15:00:09

1

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

0

我也看到过这个错误。在我的情况下,问题是Ajax响应对象中的延迟导致Selenium IDE错误。为我工作的解决方案是在测试脚本中的任何Ajax调用之后添加一个暂停命令。

下调用正在采取几秒钟有效Ajax响应 点击 CSS =#form3 > div.addButton > button.btn.btn小学

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

0

我建议你手动测试这些步骤w ^这在你的硒测试中有效。如果它不可重现,那么它可能不是页面中的问题。 请使用assert函数调试您的selenium脚本,以确定它在哪里找到意外警报。

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

}

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