【问题标题】:Selenium-RC Unable to handle Confirmation boxSelenium-RC 无法处理确认框
【发布时间】:2012-01-04 21:57:02
【问题描述】:

我正在测试一个网络应用程序,我在其中从列表中删除一个项目。单击删除后,应用程序会要求确认。 Selenium IDE 将其检测为确认框。当我通过 RC (C#) 运行代码时,它甚至会捕获确认框,在该确认框上执行删除按钮的单击,但是,屏幕上永远不会看到确认框。此外,它只点击删除按钮;该项目不会被删除。我手动试了一下,效果很好。

请帮忙,我是 Selenium 的新手,并试图在多个论坛上找到答案,但没有成功。

代码如下:

string confirmation;
for (int second = 0;; second++) {
    if (second >= 60) Assert.Fail("timeout");
    try
    {
        confirmation=selenium.GetConfirmation();

        if ((confirmation == " Delete confirmation message")) break;

    }
    catch (Exception e)
    {
        PrintLog("Error while waiting for confirmation. Error: "+e.Message);
    }
    Thread.Sleep(1000);
}           

try
{
    Assert.IsTrue(confirmation == "Delete confirmation message");
}
catch (AssertionException e)
{
    PrintLog(e.Message);
}

selenium.FireEvent("//a[@id='btnOkConfirm']","click");

在最后一条语句之后,必须删除选定的项目并且页面应该刷新,但是没有任何反应。我只能看到“Javascript:;”写在firefox窗口的状态栏中。我想让 javascript href 在 selenium-rc 中工作是有问题的。
谢谢,
瓦米普

【问题讨论】:

  • 更具体地说,我无法点击确认框的删除按钮。
  • 你能发布你正在使用的代码吗?

标签: c# nunit selenium selenium-rc


【解决方案1】:

有许多命令可以处理 JavaScript 确认。 Selenium 默认会在确认时选择“确定”,除非您发送chooseCancelOnNextConfirmation 命令。为了使用确认,您需要使用getConfirmation 命令。

上述命令的 Selenium 参考:

此外,如果您的 click 命令未显示 JavaScript 确认,您可能会发现未触发相应的事件。您可以尝试使用mouseDownmouseUpcommands,或fireEvent 命令。

【讨论】:

  • 感谢您的回答。将尽快检查并通知您是否成功。再次感谢 - Vamyip
  • 我已经回复了我的帖子。请您确认是否属实。谢谢
【解决方案2】:

最近,我发现这种行为是由于 selenium 的架构(更准确地说,它基于 javascript 的核心)而发生的。当我手动进行测试时,保持 selenium IDE 打开,这种行为会被复制。所以,我认为目前还没有立即解决这个问题的办法。如果我找到解决方法,将在此处发布。

感谢戴夫的回复。


更新:开发团队通知我,没有在 selenium IDE 旁边运行时调用 javascript 函数。这确实是 Selenium 的 Javascript 核心的问题。

感谢所有花时间回答这个问题的人。

问候,
瓦米普

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    相关资源
    最近更新 更多