Selenium c#接受确认框

时间:2012-10-05 10:45:19

标签: c# selenium nunit webdriver selenium-webdriver

我在c#中使用selenium编写了一个nUnit测试。

一切顺利,直到我必须确认JS确认框。

这是我正在使用的代码:

this.driver.FindElement(By.Id("submitButton")).Click();
this.driver.SwitchTo().Alert().Accept();

提交按钮后出现确认框。确认出现然后立即消失,但表单不提交。无论上面的accept()行如何,行为都是相同的。

我使用的是Firefox v15.0.1和selenium v​​2.24

我尝试在提交点击和确认接受之间插入一个Thread.Sleep。

我读过的所有内容都说selenium驱动程序会自动发送确认确认,但似乎还有其他事情发生。

3 个答案:

答案 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);
}
}
}
}