转:WebDriver(Selenium2) 处理可能存在的JS弹出框

时间:2023-03-09 02:57:13
转:WebDriver(Selenium2) 处理可能存在的JS弹出框

在自动化测试过程中,有些情况下我们会遇到一些潜在的Javascript弹出框。(即某些条件下才会出现,不是固定出现),然后如果当这种弹出框出现,我们没有加以处理,WebDriver将无法进行下一步的操作,并且会抛出NoAlertPresentException的异常(从2.16版本开始)。所以,使用以下方法可以处理潜在的1个alert(javascript弹出框)。

  1. public boolean dealPotentialAlert(WebDriver driver,boolean option) {
  2. boolean flag = false;
  3. try {
  4. Alert alert = driver.switchTo().alert();
  5. if (null == alert)
  6. throw new NoAlertPresentException();
  7. try {
  8. if (option) {
  9. alert.accept();
  10. System.out.println("Accept the alert: " + alert.getText());
  11. } else {
  12. alert.dismiss();
  13. System.out.println("Dismiss the alert: " + alert.getText());
  14. }
  15. flag = true;
  16. } catch (WebDriverException ex) {
  17. if (ex.getMessage().startsWith("Could not find"))
  18. System.out.println("There is no alert appear!");
  19. else
  20. throw ex;
  21. }
  22. } catch (NoAlertPresentException e) {
  23. System.out.println("There is no alert appear!");
  24. }
  25. return flag;
  26. }

方法返回值为,调用出是否出现了alert。 
参数列表中第二个参数option为期望对alert的处理方式(true:ok/false:cancle) 
在selenium2.20及以上版本中,增加了alertIsPresent方法。 也可以将这个方法替换上面的内容。用于捕获alert。