点击Alert(Selenium IDE)中的OKbutton,

我需要使用Selenium命令单击警报窗口中的“确定”button。 我试过assertAlertverifyAlert但他们不做我想要的。

点击“确定”button可以吗? 如果是这样,有人可以给我一个Selenium IDE命令的例子吗?

尝试Selenium 2.0b1。 它具有与第一版不同的核心。 它应该支持根据文档popup对话框:

popup对话框

从Selenium 2.0 beta 1开始,支持处理popup对话框。 触发后,您可以通过以下操作访问警报:

Java的

 Alert alert = driver.switchTo().alert(); 

ruby

 driver.switch_to.alert 

这将返回当前打开的警报对象。 有了这个对象,你现在可以接受,解雇,阅读它的内容,甚至键入提示。 这个界面在警报,确认和提示方面同样适用。 有关更多信息,请参阅JavaDocs。

点击警告框中的“确定”button:

 driver.switchTo().alert().accept(); 

这是2012年的答案,是从2009年开始的问题,但是人们仍然在看,只有一个正确的(使用WebDriver )和一个几乎有用(但不够好)的答案。


如果您使用的是Selenium RC,并且实际上可以看到一个警告对话框,那么就无法完成。 selenium应该为你处理。 但是, 正如Selenium文档所述 :

selenium试图隐藏你的对话(通过replacewindow.alert,window.confirm和window.prompt),这样他们不会停止你的页面的执行。 如果您看到popup警报,可能是因为它在页面加载过程中触发,通常我们无法保护页面。

这是Selenium RC(也就是Selenium IDE)的一个已知限制,也是Selenium 2(WebDriver)开发的原因之一。 如果您想处理JS警报,则需要使用WebDriver 警报处理

也就是说,您可以使用Robotselenium.keyPressNative()来填写任何文本,然后按Enter并盲目地确认对话框。 这不是最干净的方式,但它可以工作。 但是,您将无法获得alert消息。

Robot将所有有用的键映射到常量,所以这很容易。 使用keyPressNative() ,您需要使用10作为Enter的值,或者使用Esc的 27 ,因为它使用ASCII代码 。

如果您使用seleniumIDE,那么你必须手动点击确定button,因为当警报消息命令运行时,浏览器停止工作,如果你想点击确定button自动,那么你必须使用seleniumRC或Web驱动器和下面的命令是seleniumIDE

在seleniumide使用storeeval命令,不同types的框

  storeEval | alert("This is alert box") | storeEval | prompt("This is prompt box. Please enter the value") | text storeEval | confirm("this is cofirm box") | 

1 | 打印警报popup文本并closures – 我

 Alert alert = driver.switchTo().alert(); System.out.println(closeAlertAndGetItsText()); 

2 | 打印警报popup文本并closures-II

 Alert alert = driver.switchTo().alert(); System.out.println(alert.getText()); //Print Alert popup alert.accept(); //Close Alert popup 

3 | 断言警报popup文本并closures

 Alert alert = driver.switchTo().alert(); assertEquals("Expected Value", closeAlertAndGetItsText()); 

你可以看看chooseOkOnNextConfirmation ,尽pipe如果我正确地阅读文档,这应该是默认的行为。

问题并不清楚 – 这是否为页面加载警报? 在使用Selenium时,您不应该看到任何警告对话,因为它会用自己的版本replacealert() ,只是捕获给出的validation信息。

Selenium在页面加载时不支持alert() ,因为它需要使用自己的版本来修补被测窗口中的函数。

如果您无法摆脱被testing应用程序的onload警报,则应该考虑使用GUI自动化来单击生成的popup窗口,例如,如果您在Windows上,则使用AutoIT 。

使用警报接口,首先switchTo()来提醒,然后使用accept()来点击OK或使用dismiss()来取消它

 Alert alert_box = driver.switchTo().alert(); alert_box.accept(); 

要么

 Alert alert_box = driver.switchTo().alert(); alert_box.dismiss(); 

assertAlert应该做的伎俩。 我在文档中看到,在页面的OnLoad事件处理程序中生成的警报不能以这种方式编写脚本(由于ASP.NET页面生命周期,我自己也经历过)。 这可能是你遇到的?

对于selenium,警报是使用JavaScript引发的

  javascript:alert(); 

有一个基本检查来validation您的警报是否实际上是一个JavaScript警报或只是一个基于div的框来显示一些消息。 如果它的JavaScript警报,您将无法在运行selenium脚本时在屏幕上看到它。

如果您能够看到它,那么您需要获取警报的okbutton的定位器,并使用selenium.click(locator)closures警报。 如果你能提供更多的上下文,可以帮助你更好:

  1. IDE或RC?
  2. 警报的HTML代码
  3. 你的selenium脚本。

Vamyip

使用chooseOkOnNextConfirmation()来closures警报,并使用getAlert()来validation它已被显示(并可选地抓取其文本进行validation)。

 selenium.chooseOkOnNextConfirmation(); // prepares Selenium to handle next alert selenium.click(locator); String alertText = selenium.getAlert(); // verifies that alert was shown assertEquals("This is a popup window", alertText); ... 
Interesting Posts