Selenium-RC无法处理确认框。

3
我正在测试一个涉及删除列表项的Web应用程序。单击删除时,该应用程序会出现确认提示。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:;”的字样。我猜在selenium-rc中让javascript href起作用可能存在问题。
谢谢, Vamyip

更具体地说,我无法让确认框中的删除按钮点击起作用。 - vamyip
你能发一下你正在使用的代码吗? - AlistairH
2个回答

2
有许多命令可用于处理 JavaScript 确认。Selenium 默认会在确认时选择“确定”('OK'),除非您发送 chooseCancelOnNextConfirmation 命令。为了消耗确认,您需要使用 getConfirmation 命令。
上述命令的 Selenium 参考资料: 此外,如果您的 click 命令没有显示 JavaScript 确认,则可能会发现适当的事件未被触发。您可以尝试使用 mouseDownmouseUp 命令,或者使用 fireEvent 命令。

感谢您的回答。我会尽快检查并告知您是否成功。 再次感谢 - Vamyip - vamyip
我已经回复了我的帖子。您能否确认它是否正确。谢谢。 - vamyip

1
最近,我发现这种行为是由于Selenium的架构(更准确地说,它基于JavaScript的核心)所导致的。当我手动进行测试时,保持Selenium IDE打开,这种行为会被复制。因此,我认为目前没有立即解决这个问题的方法。如果我找到一个解决办法,我会在这里发布。
感谢Dave的回复。
更新:开发团队告诉我,当Selenium IDE同时运行时,javascript函数没有被调用。这确实是Selenium的Javascript核心问题。
谢谢所有抽出时间来回答这个问题的人。
敬礼,
Vamyip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接