繁体   English   中英

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

[英]Selenium WebDriver with Java: Can't accept alert

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

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

但是事实并非如此。

同样,这不起作用。

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

Selenium引发NoAlertPresent异常。 如果弹出的不是警报,那是什么? 以及如何单击“是”!

在这种情况下,我希望检查(验证)页面上的警报是否存在,如果存在,请接受。 有点像:

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;

 }

在这里您可以获得详细信息,也不要忘记逐步调试。

希望这对您有所帮助。

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

如果是Java脚本警报,则应该可以

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

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

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

更新


也可能是因为您试图单击/接受警报时不存在警报。 要进行快速检查,请进入4-5秒的睡眠状态,然后尝试driver.switchTo().alert().accept(); 一旦确定,就在try and catch循环中等待警报(任何异常处理)。

如果您使用的是最新版本的Webdriver,请在2.20以上的值上填写

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

如果警报是与我们单击时收到的javascript警报类似的javascript警报,则应该可以正常工作

警报演示确认弹出演示

更新

此代码将帮助您接受警报

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM