Selenium WebDriver with Java:无法接受警报

在selenium IDE中录制时,我可以在弹出窗口中单击“确定”按钮,并希望能够使用它来单击它

driver.findElement(By.linkText("OK")).click(); 

但事实并非如此。

同样,这不起作用。

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

Selenium会抛出NoAlertPresentexception。 如果弹出的不是警报,那么它是什么? 我如何点击“是”!

在这种情况下,我更愿意检查(validation)页面上的警报状态,然后是否存在 – 接受它。 这有点像:

 public boolean isAlertPresent() { 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; } 

在这里你可以得到细节也不要忘记一步一步的调试。

希望这对你有所帮助。

如果您使用的是最新版本的webdriver,那么事实上是2.20以上

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

应该工作提供警报是一个类似于我们点击时获得的警报

警报演示或确认弹出演示

更新

这里的代码将帮助您接受警报

 driver = new FirefoxDriver(); String baseUrl = "http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert"; driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.get(baseUrl); driver.switchTo().frame(0); driver.findElement(By.cssSelector("input[type=\"button\"]")).click(); driver.switchTo().alert().accept(); 

它可能是任何东西。 你应该告诉我们。

如果它是Java脚本警报,那么这应该工作

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

如果Web应用程序自动选择/突出显示“确定”按钮,则至少可以尝试发送回车键/返回键。

 import org.openqa.selenium.Keys WebElement.sendKeys(Keys.RETURN); 

更新


这也可能是因为您尝试单击/接受警报时不存在警报。 快速检查一下4-5秒的睡眠时间,然后尝试使用driver.switchTo().alert().accept(); 。 一旦确定,然后等待trycatch循环中的警报(任何exception处理)。