我正在尝试验证警报窗口的存在然后接受它。使用下面的代码执行此操作时,当没有警报窗口时,它会导致抛出异常,这是不需要的,因此要求修改代码。
public void acceptIfAlertPresent()
{
driver.sleep(2000);
try{
if(driver.switchTo().alert() != null){
String alertMessage=driver.switchTo().alert().getText();
try
{
driver.switchTo().alert().accept();
}
catch (StackOverflowError e)
{
driver.switchTo().alert().accept();
}
resultMap.putOutput("MessageOnAlertWindow", alertMessage);
}
}catch(Exception e){
}
}
如何修改我的方法?几乎所有时间,异常都是从最外面的catch块抛出的
答案 0 :(得分:0)
在外部finally
语句后添加catch(Exception e)
块。始终执行finally
块,即使抛出异常也是如此。在finally块中,您无能为力,该方法将安全退出而不是抛出异常。
答案 1 :(得分:0)
如果要处理警报的对象,如果显示..我想我们可以像下面那样做
//chrome
System.setProperty("webdriver.chrome.driver", "E:\\selenium_setups\\01112017\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://www.seleniumhq.org/");
try{
String alertText=driver.switchTo().alert().getText();
driver.switchTo().alert().accept();
//any other stuff
}catch(Exception e){
System.out.println("exception handled "+e.getMessage());
}
System.out.println("after try and catch");
答案 2 :(得分:0)
试试这个,当没有提醒窗口时,它不会抛出任何错误:
try {
WebDriverWait waitAlert = new WebDriverWait(wb, 30);
waitAlert.until(ExpectedConditions.alertIsPresent());
wb.switchTo().alert().accept();
}
catch (Exception e) {
logger.info("Alert Didn't Come");
}