webdriver切換窗口

1. 方案一:

當測試頁面同時出現2個或者以上窗口時候,而且新打開的window沒有namem,可以使用driver.switchTo().window(winHandleID)來進行切換,如下代碼已經在IE8中測試通過:

Java代碼  收藏代碼
  1. //Store the current window handle  
  2. String winHandleBefore = driver.getWindowHandle();  
  3.           
  4. //Switch to new window opened  
  5. for(String winHandle : driver.getWindowHandles()){  
  6.             System.out.println("+++" + winHandle);  
  7.             driver.switchTo().window(winHandle);  
  8.             }  
  9. // Close the original window  
  10.         driver.switchTo().window(winHandleBefore);  
  11.         driver.close();  
  12.           
  13. //Switch to new window opened  
  14. for(String winHandle : driver.getWindowHandles()){  
  15.             System.out.println("+++" + winHandle);  
  16.             driver.switchTo().window(winHandle);  
  17.             }  

 

當最後只有一個窗口剩下的時候,應該可以直接使用

driver.switchTo().window(driver.getWindowHandle)

去選中新的窗口

2. 方案二:


在webdriver官方的api中,切換窗口的方法提供的參數是nameOrHandle。

引用
WebDriver window(java.lang.String nameOrHandle)
          Switch the focus of future commands for this driver to the window with the given name/handle.

但是在實際運用中,更多的可能是需要根據新窗口的title去切換窗口。因此封裝瞭如下方法:
Java代碼  收藏代碼
  1. public boolean switchToWindow(WebDriver driver,String windowTitle){  
  2.     boolean flag = false;  
  3.     try {  
  4.         String currentHandle = driver.getWindowHandle();  
  5.         Set<String> handles = driver.getWindowHandles();  
  6.         for (String s : handles) {  
  7.             if (s.equals(currentHandle))  
  8.                 continue;  
  9.             else {  
  10.                 driver.switchTo().window(s);  
  11.                 if (driver.getTitle().contains(windowTitle)) {  
  12.                     flag = true;  
  13.                     System.out.println("Switch to window: "  
  14.                             + windowTitle + " successfully!");  
  15.                     break;  
  16.                 } else  
  17.                     continue;  
  18.             }  
  19.         }  
  20.     } catch (NoSuchWindowException e) {  
  21.         System.out.println("Window: " + windowTitle  
  22.                 + " cound not found!", e.fillInStackTrace());  
  23.         flag = false;  
  24.     }  
  25.     return flag;  
  26. }  

首先獲取當前driver驅動的所有窗口的handle然後進行比對篩選,如果窗口的title符合預期,則切換,並返回true,反之則返回false。


3. 方案三:


    public static WebDriver switchWindows(WebDriver dr) {
        WebDriver window;
        String currentWindow = dr.getWindowHandle();
        Set<String> handles = dr.getWindowHandles();
        Iterator<String> it = handles.iterator();
        while (it.hasNext()) {
            if (currentWindow == it.next())
                continue;
            window = dr.switchTo().window(it.next());
            // dr.manage().window().maximize();
            return window;
        }
        return null;
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章