Selenium-RC无法处理确认框

时间:2010-07-06 04:36:58

标签: c# nunit selenium selenium-rc

我正在测试一个网络应用程序,我从列表中删除了一个项目。点击删除后,该应用程序会要求确认。 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 hrefs在selenium-rc中工作是有问题的。
谢谢,
Vamyip

2 个答案:

答案 0 :(得分:2)

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

以上命令的Selenium参考:

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

答案 1 :(得分:1)

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

感谢Dave回复。


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

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

的问候,
Vamyip