我在c#中使用selenium编写了一个nUnit测试。
一切顺利,直到我必须确认JS确认框。
这是我正在使用的代码:
this.driver.FindElement(By.Id("submitButton")).Click();
this.driver.SwitchTo().Alert().Accept();
提交按钮后出现确认框。确认出现然后立即消失,但表单不提交。无论上面的accept()行如何,行为都是相同的。
我使用的是Firefox v15.0.1和selenium v2.24
我尝试在提交点击和确认接受之间插入一个Thread.Sleep。
我读过的所有内容都说selenium驱动程序会自动发送确认确认,但似乎还有其他事情发生。
答案 0 :(得分:13)
在本期中我将尝试验证确认框存在。 它类似于:
this.driver.FindElement(By.Id("submitButton")).Click();
boolean presentFlag = false;
try {
// Check the presence of alert
Alert alert = driver.switchTo().alert();
// Alert present; set the flag
presentFlag = true;
// if present consume the alert
alert.accept();
} catch (NoAlertPresentException ex) {
// Alert not present
ex.printStackTrace();
}
return presentFlag;
}
然后,如果不工作。尝试逐步调试。
有关硒here警报(确认框)处理的一些其他信息
希望这能以某种方式帮助你
答案 1 :(得分:8)
你只需要:
IAlert alert = driver.SwitchTo().Alert();
alert.Accept();
答案 2 :(得分:0)
我正在测试的终点没有可靠的响应时间,我唯一可以使用Firefox使用webdriver selenium-dotnet-2.33.0(.NET4)的方法是通过执行以下操作:
private void acceptAlert(){
string alertText = "";
IAlert alert = null;
while (alertText.Equals("")){
if (alert == null)
{
try{
alert = driver.SwitchTo().Alert();
}
catch{
System.Threading.Thread.Sleep(50); }
}
else{
try{
alert.Accept();
alertText = alert.Text;
}
catch (Exception ex){
if (ex.Message.Equals("No alert is present")) alertText = "Already Accepted";
else System.Threading.Thread.Sleep(50);
}
}
}
}