窗口切换

上一篇 / 下一篇  2013-07-23 18:12:23 / 个人分类:selenium

面朝大海,春暖花開......
专题二:窗口切换
场景:使用webdriver开展自动化过程中,经常会遇到窗口间的切换。因为在通过执行脚本将web页面打开的时候,并不能如我们手工操作时,理所当然的就可以在新打开的页面上进行操作,而是通过窗口跳转的脚本来完成的。
思路:通过获取窗口句柄,来实现窗口间的切换。
脚本:(JAVA语言实现)
 
方法一:适用于窗口有标题作为判断唯一依据的场景
public static boolean switchToNewWindow(WebDriver driver,final String windowTitel){
      driver.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS)
         return(new WebDriverWait(driver,200)).until(new ExceptedCondition<Boolean>){
             public Boolean apply(WebDriver driver){
              //获取所有窗口的句柄
             Set<String>Handles = driver.getWindowHands();
//             System.out.println(Handles.size());
             //循环进入所有的窗口
             for (String handle:Handles)
            {
              driver.switchTo().window(handle);
 //             System.out.println(driver.getCurrentUrl());
             //窗口的Title值对比
              if(driver.getTitle().equals(windowTitle))
                 {
                 return true;//跳出函数
                  }
             }
                  return false;//跳出函数
            }
     }
   );
   }
 
方法二:窗口切换通用的方法,即使在窗口没有title标识的时候也一样适用。(传递的参数:数组)
public static boolean switchToNewWindow(WebDriver driver,final Set<String>handles){
        return (new WebDriverWait(driver,200)).until(new ExpectedCondition<Boolean>(){
          public Boolean apply(WebDriver driver){
          Set<String> newHandles = driver.getWindowHandles();
          newHandles.removeAll(handles);
 //       System.out.println(newHnadles.size());
          if(newHandles.size()>0){
          driver.switchTo().window(newHandles.iterator().next());
//        System.out.println("driver switch to pop up window.");
//        System.our.println(driver.getCurrentUrl());
          return true;//跳出函数
            }
          System.out.println("Not find any other handle.Go to current window.");
         return false;//跳出函数
       }
   }
  );
 }

TAG: 窗口切换

 

评分:0

我来说两句

Open Toolbar