selenium-切换到新的窗口

/**
  * 功能: 切换windows窗口
  *@param driver
  *@param windowTitle
  *@return boolean
  */
 public boolean switchToNewWindow(WebDriver driver, String windowTitle) {
  boolean flag = false;
  try {
   String currentHandle = driver.getWindowHandle();
   Set<String> handles = driver.getWindowHandles();
   for (String s : handles) {
    if (s.equals(currentHandle))
     continue;
    else {
     driver.switchTo().window(s);
     if (driver.getTitle().contains(windowTitle)) {
      flag = true;
      System.out.println("Switch to window: " + windowTitle
        + " successfully!");
      break;
     } else
      continue;
    }
   }
  } catch (NoSuchWindowException e) {
   System.out.println("Switch to window: " + windowTitle
     + " failed!");
   e.printStackTrace();
   flag = false;
  }
  return flag;
 }
 
 /**
  * 功能:删除一个窗口的Handler,由于set集合是无序的,所以需要删除 
  *@param driver
  *@param firstHandler
  */
 public void removeOldWindow(WebDriver driver, String firstHandler) {
  
  // 获取所有窗口的Handler,并存放在Set集合里
  Set<String> handlers = driver.getWindowHandles();

  // 删掉第一个窗口的Handler
  if (handlers.remove(firstHandler)) {
   System.out.println("已删掉第一个窗口的Handler");
  }
  
  // 把Set集合转换成Iterator
  Iterator<String> it = handlers.iterator();
  try {
   if (it.hasNext()) {
    driver.switchTo().window(it.next());
   }
  } catch (Exception e) {
   System.out.println("没有可用的窗口Handler");
  }
 }

posted @ 2016-03-03 14:58  ice_flower_ly  阅读(3184)  评论(0编辑  收藏  举报