在使用selenium IDE时,当我需要点击弹出窗口中的“OK”按钮时,可以进行录制操作,并期望能够使用以下代码进行点击:
driver.findElement(By.linkText("OK")).click();
但情况并非如此。
同样,这也行不通。
driver.switchTo().alert().accept();
Selenium会抛出一个NoAlertPresent异常。如果弹出的不是警告框,那么它是什么?并且我该如何点击“是”!
在使用selenium IDE时,当我需要点击弹出窗口中的“OK”按钮时,可以进行录制操作,并期望能够使用以下代码进行点击:
driver.findElement(By.linkText("OK")).click();
driver.switchTo().alert().accept();
Selenium会抛出一个NoAlertPresent异常。如果弹出的不是警告框,那么它是什么?并且我该如何点击“是”!
它可能是任何东西。你应该告诉我们是什么。
如果它是一个Javascript弹出框,那么这个代码可以使用:
driver.switchTo().alert().accept();
至少你可以尝试发送回车键,如果“确定”按钮被Web应用程序自动选择/突出显示。
import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);
更新
可能是因为在您尝试点击/接受警报时,警报未出现。为了进行一个快速检查,请等待4-5秒钟,然后尝试driver.switchTo().alert().accept();
。一旦确定,然后在try
和catch
循环中放置等待警报出现的代码(任何异常处理)。
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();
如果警告是类似于单击时获取的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();
.alert()
调用的IAlert
接口将无法帮助您。 - Arran