前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium切换窗口driver.switchTo().window(handle)

Selenium切换窗口driver.switchTo().window(handle)

作者头像
软测小生
发布2019-07-05 10:59:55
2.3K0
发布2019-07-05 10:59:55
举报
文章被收录于专栏:软测小生
今天继续深入Selenium 切换窗口的学习

当测试页面同时出现2个或者以上窗口时候,而且新打开的window没有namem,可以使用driver.switchTo().window(handle)来进行切换,直接上代码:

代码语言:javascript
复制
import java.util.Iterator;  
import java.util.Set;  
import org.openqa.selenium.NoSuchWindowException;  
import org.openqa.selenium.WebDriver;  
import org.openqa.selenium.chrome.ChromeDriver;  
public class forEachWindows {  
protected void switchWindowByHandle(WebDriver dr, String currentHandle, Set<String> handles) {  
        Iterator<String> it = handles.iterator();  
 while (it.hasNext()) {  
            String newHandles = it.next();  
 if(currentHandle.equals(newHandles)) {  
 continue;  
            }  
 try {  
                String newHanlde = it.next();  
                WebDriver window = dr.switchTo().window(newHanlde);// 切换到新窗口   
                System.out.println("New page Title is:" + window.getTitle());    
                System.out.println("New page URL is:" + window.getCurrentUrl());  
            } catch (Exception e) {    
                System.out.println("无法切换至新打开的窗口");    
                System.out.println(e.getMessage());    
            }  
        }             
    }  
 protected boolean switchToWindowByTitle(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.printf("Window: " + windowTitle  + " cound not found!", e.fillInStackTrace());    
            flag = false;    
        }    
 return flag;    
    }     
 public void test(){  
        WebDriver driver = new ChromeDriver();  
        String currentHandle = driver.getWindowHandle();//获取当前窗口的句柄 
        Set<String> handles = driver.getWindowHandles();//获取所有窗口的句柄 
        String windowTitle = driver.getTitle();  
        switchWindowByHandle(driver, currentHandle, handles);//通过句柄来控制切换到新窗口 
 //有的业务逻辑需求是要通过窗口的Title来切换窗口 
 //首先获取当前driver驱动的所有窗口的handle然后进行比对筛选 
 //如果窗口的title符合预期,则切换,并返回true,反之则返回false。 
        switchToWindowByTitle(driver, windowTitle);//通过Title来切换窗口 
    }  
}  
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软测小生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档