【问题标题】:SeleniumException: ERROR: There was an unexpected Alert!SeleniumException:错误:出现意外警报!
【发布时间】:2010-11-27 00:37:19
【问题描述】:

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

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

每当我尝试点击链接、标签或任何可点击的东西时都会发生这种情况。任何想法的家伙。这真是令人沮丧。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果在其他浏览器中没有出现同样的问题,我会感到惊讶。也许您的应用程序的行为因浏览器而异?基本上,Selenium 报告说,在您单击这些链接或选项卡后,它无法继续执行其他命令,因为它检测到了意外的 JavaScript 警报。您不会看到这些警报,因为 Selenium 会消耗它们。您可以做一些事情来弄清楚发生了什么。

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

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

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

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

          编辑:经过进一步审查,警报消息似乎不匹配。即使它在记录时抓住了警报本身。目视检查无法帮助我确定它认为不同的地方。

          【讨论】:

          • storeAlert(dummy_variable) before click() 似乎最适合我。
          【解决方案5】:

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

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

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

          【讨论】:

            【解决方案6】:

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

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

            }

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

            【讨论】:

              猜你喜欢
              • 2022-09-29
              • 2012-04-20
              • 1970-01-01
              • 2011-10-12
              • 1970-01-01
              • 1970-01-01
              • 2013-07-06
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多