运行selenium测试时处理javaScript警报?

运行selenium测试时处理javaScript警报?,javascript,ruby,selenium,Javascript,Ruby,Selenium,我正在我的网页上运行一些selenium测试(ruby),当我在文本框中输入一个无效字符时,JavaScript会抛出这样的警报 if(isNaN($(this).val()) || Number($(this).val().valueOf() <=0)){ alert("Please Enter A Number"); } if(isNaN($(this).val())| | Number($(this).val().valueOf()虽然没有多大帮助,但Selenium RC

我正在我的网页上运行一些selenium测试(ruby),当我在文本框中输入一个无效字符时,JavaScript会抛出这样的警报

if(isNaN($(this).val()) || Number($(this).val().valueOf() <=0)){
    alert("Please Enter A Number");
}
if(isNaN($(this).val())| | Number($(this).val().valueOf()虽然没有多大帮助,但Selenium RC的Java文档似乎表明确实存在getAlert()。该站点还列出了以下函数:

使用Selenium处理Selenium中的以下命令可用于处理警报:

  • getAlert()
  • assertAlert()assertAlertNotPresent()
  • assertAlertPresent()存储警报()
  • storeAlertPresent()验证警报()
  • verifyAlertNotPresent()
  • verifyAlertPresent()waitForAlert())
  • waitForAlertNotPresent()
  • waitForAlertPresent()
无论警报的内容如何,…AlertPresent()和…AlertNotPresent()函数都会检查警报是否存在。…alert()函数允许调用方指定应匹配的模式。getAlert()函数方法也存在于Selenium RC中,并返回显示的上一个警报的文本。类似的函数也可用于确认


Selenium截获所有JavaScript alert()调用(以及confirm()和prompt())并自行处理。您可以告诉它您希望它做什么,并且可以发现发生了什么(如Zugwalt所说,在加载期间除外)。您可以调用isAlertPresent()检查是否生成了警报,以及getAlert()如果有多个警报(按顺序检索),Selenium甚至会为您将它们排队。如果生成了警报,而您没有调用getAlert()来检索它,下一个Selenium操作将抛出异常。如果您在没有警报时调用它,您将得到异常

例如(未经测试,使用C#,但你应该明白这一点):


请注意,存在一个已知的selenium问题,它无法处理在onLoad事件期间生成的警报,将挂起。我们通过让测试代码在另一个线程中执行[AutoIt][1]来解决此问题。[1]:
selenium.GetEval("window.alert('Hi, mom!'); window.alert('Bye, dad!')");
Assert.AreEqual("Hi, mom!", selenium.GetAlert());
Assert.AreEqual("Bye, dad!", selenium.GetAlert());
Assert.IsFalse(selenium.isAlertPresent());