带有Java的Selenium WebDriver:无法接受警报

时间:2012-10-15 10:11:54

标签: java selenium-webdriver selenium-ide

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

单击它
driver.findElement(By.linkText("OK")).click();

但事实并非如此。

同样,这不起作用。

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

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

3 个答案:

答案 0 :(得分:2)

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

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;

 }

here您可以获得详细信息 另外,请不要忘记逐步调试。

希望这会对你有所帮助。

答案 1 :(得分:1)

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

如果它是Java Script警报,那么这应该可行

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

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

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

<强>更新


也可能是因为您尝试点击/接受它时警报不存在。 对于快速检查,请将其置于4-5秒的睡眠状态,然后尝试driver.switchTo().alert().accept();。确定之后,等待trycatch循环中出现警报(任何异常处理)。

答案 2 :(得分:1)

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

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

应该有效,前提是警报是一个类似于我们点击

时获得的警告

alert democonfirm pop-up demo

<强>更新

此处此代码将帮助您接受警报

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();