我正在测试一个网络应用程序,我从列表中删除一个项目。单击删除后,应用程序会要求确认。 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 中工作是有问题的。
谢谢,
瓦米普
最佳答案
有许多命令可以处理 JavaScript 确认。默认情况下,Selenium 将在确认时选择“确定”,除非您发送 chooseCancelOnNextConfirmation
命令。为了使用确认,您需要使用 getConfirmation
命令。
上述命令的 Selenium 引用:
- http://release.seleniumhq.org/selenium-core/1.0/reference.html#storeConfirmation
- http://release.seleniumhq.org/selenium-core/1.0/reference.html#chooseCancelOnNextConfirmation
- http://release.seleniumhq.org/selenium-core/1.0/reference.html#chooseOkOnNextConfirmation
此外,如果您的 click
命令没有显示 JavaScript 确认,您可能会发现相应的事件没有被触发。您可以尝试使用 mouseDown
和 mouseUp
命令,或 fireEvent
命令。
关于c# - Selenium-RC 无法处理确认框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3183515/