我正在测试一个网络应用程序,我从列表中删除了一个项目。点击删除后,该应用程序会要求确认。 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
答案 0 :(得分:2)
有许多命令可以处理JavaScript确认。除非您发送chooseCancelOnNextConfirmation
命令,否则Selenium默认会在确认时选择“确定”。要使用确认,您需要使用getConfirmation
命令。
以上命令的Selenium参考:
此外,如果您的click
命令未显示JavaScript确认,您可能会发现未触发相应的事件。您可以尝试使用mouseDown
和mouseUp
命令或fireEvent
命令。
答案 1 :(得分:1)
最近,我发现这种行为是由于硒的结构(更确切地说,它的基于javascript的核心)而发生的。当我手动进行测试,保持selenium IDE打开时,会复制此行为。所以,我认为现在没有立即解决这个问题的方法。如果我找到解决方法,将在此处发布。
感谢Dave回复。
更新:开发团队告诉我,在运行selenium IDE时没有调用javascript函数。这确实是Selenium的Javascript核心问题。
的问候,
Vamyip