[英]Alert handling in Selenium WebDriver (selenium 2) with Java
我想检测是否弹出警报。 目前我正在使用以下代码:
try {
Alert alert = webDriver.switchTo().alert();
// check if alert exists
// TODO find better way
alert.getText();
// alert handling
log().info("Alert detected: {}" + alert.getText());
alert.accept();
} catch (Exception e) {
}
问题是,如果网页的当前状态没有警报,它会等待特定的时间,直到超时,然后抛出异常,因此性能非常糟糕。
有没有更好的方法,也许我可以使用警报事件处理程序来处理动态发生的警报?
这就是使用WebDriver 中的显式等待对我有用的方法:高级用法
public void checkAlert() {
try {
WebDriverWait wait = new WebDriverWait(driver, 2);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
alert.accept();
} catch (Exception e) {
//exception handling
}
}
编写如下方法:
public boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} // try
catch (Exception e) {
return false;
} // catch
}
现在,您可以使用上面写的方法检查警报是否存在,如下所示:
if (isAlertPresent()) {
driver.switchTo().alert();
driver.switchTo().alert().accept();
driver.switchTo().defaultContent();
}
Alert alert = driver.switchTo().alert(); alert.accept();
您还可以拒绝警告框:
Alert alert = driver.switchTo().alert(); alert().dismiss();
try
{
//Handle the alert pop-up using seithTO alert statement
Alert alert = driver.switchTo().alert();
//Print alert is present
System.out.println("Alert is present");
//get the message which is present on pop-up
String message = alert.getText();
//print the pop-up message
System.out.println(message);
alert.sendKeys("");
//Click on OK button on pop-up
alert.accept();
}
catch (NoAlertPresentException e)
{
//if alert is not present print message
System.out.println("alert is not present");
}
你可以试试
try{
if(webDriver.switchTo().alert() != null){
Alert alert = webDriver.switchTo().alert();
alert.getText();
//etc.
}
}catch(Exception e){}
如果这不起作用,您可以尝试遍历所有窗口句柄并查看警报是否存在。 我不确定警报是否使用硒作为新窗口打开。
for(String s: webDriver.getWindowHandles()){
//see if alert exists here.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.