我正在测试一个从列表中删除项目的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");在最后一条语句之后,必须删除选定的项,并刷新页面,但什么也不会发生。我所能看到的只有firefox窗口的状态栏中写着"Javascript:;“。我想让javascript hrefs在selenium-rc中工作是有问题的。
谢谢,
Vamyip
发布于 2010-08-05 13:12:49
最近,我发现这种行为的发生是由于selenium的架构(更准确地说,是其基于javascript的核心)。当我手动执行测试时,保持selenium IDE处于打开状态,将复制此行为。因此,我认为目前还没有解决这个问题的办法。如果我找到了解决办法,我会在这里发帖。
感谢Dave的回复。
更新:开发团队告诉我,在selenium IDE同时运行的情况下,不会调用javascript函数。这确实是Selenium的Javascript核心的一个问题。
感谢花时间回答这个问题的每个人。
致以敬意,
Vamyip
发布于 2010-07-06 16:37:26
有许多命令可以处理JavaScript确认。除非您发送chooseCancelOnNextConfirmation命令,否则Selenium将在确认时默认选择“OK”。为了使用确认,您需要使用getConfirmation命令。
上述命令的Selenium参考:
此外,如果您的click命令没有显示JavaScript确认,您可能会发现没有触发相应的事件。您可以尝试使用mouseDown和mouseUp命令,或者fireEvent命令。
https://stackoverflow.com/questions/3183515
复制相似问题