Selenium c#接受确认框

我在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驱动程序会自动发送确认信息,但其他内容似乎正在发生。

在这个问题上,我会尝试validation确认框存在。 它是这样的:

 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; } 

然后,如果不工作。 尝试逐步调试。 关于selenium的警报(确认框)处理的一些额外信息,希望这能以某种方式帮助你

您只需要:

  IAlert alert = driver.SwitchTo().Alert(); alert.Accept(); 

我正在测试的终点没有可靠的响应时间,我唯一可以使用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); } } } }