Switch Window

 If the new window wiht name attribute:

driver.switchTo().window(<windowName>);

Otherwise: 


    public static final boolean switchToWindowByTitle(final String windowTitle) {
        String currentHandle = Config.driver().getWindowHandle();
        Set<String> handles = Config.driver().getWindowHandles();
        for (String h : handles) {
            if (!h.equals(currentHandle)) {
                Config.driver().switchTo().window(h);
                if (Config.driver().getTitle().contains(windowTitle)) {
                    return true;
                }
            }
        }
        return false;
    }

    public static final boolean switchToWindowByPageSource(final String windowContent) {
        Set<String> allWindows = Config.driver().getWindowHandles();
        for (String windowID : allWindows) {
            Config.driver().switchTo().window(windowID);
            if (Config.driver().getPageSource().contains(windowContent)) {
                Config.driver().switchTo().window(windowID);
                SeleniumUtils.log.info("Switch to winsdow: " + windowID);
                return true;
            }
        }
        return false;
    }

    /**
     * When two windows are opened, switch to another window
     *
     */
    public static final void switchToAnotherWindow() {
        final String parentWindowHandle = Config.driver().getWindowHandle();
        SeleniumUtils.log.info("parent Window: " + parentWindowHandle);   
        new WebDriverWait(Config.driver(), 5, 100).until(new Function<WebDriver, Boolean>() {
            public Boolean apply(final WebDriver driver) {
                String[] windowHandles = driver.getWindowHandles().toArray(new String[0]);
                SeleniumUtils.log.info("Window Size: " + windowHandles.length );
                SeleniumUtils.log.info("Window 0: " + windowHandles[0]);
                SeleniumUtils.log.info("Window 1: " + windowHandles[1]); 
                if (windowHandles.length != 2) {
                    return false;
                }
                if (windowHandles[0].equals(parentWindowHandle)) {          
                    SeleniumUtils.log.info("Switch to Window: " + windowHandles[1]);           
                    driver.switchTo().window(windowHandles[1]);
                    //Config.driver().manage().window().maximize();
                } else {
                    driver.switchTo().window(windowHandles[0]);
                    SeleniumUtils.log.info("Switch to Window: " + windowHandles[0]);  
                    //Config.driver().manage().window().maximize();
                }
                return true;
            }
        });
    }

 If test scenario is: switch to new window -> do action -> Back to original window

    /**
     * 
     * Get parent window
     *
     * @return
     */
    public String getParentWindow(){
        String parentWindowHandle = driver.getWindowHandle();
        log.info("Get Window : " +parentWindowHandle);
        return parentWindowHandle;
    }

  
    /**
     * 
     * Back Parent Window
     *
     * @param window
     */
    public void backToParentWindow(String parentWindowHandle){
        //log.info("Window before switch: " +driver.getWindowHandle() );
        driver.switchTo().window(parentWindowHandle);
        
        log.info("Window after switch: " +driver.getWindowHandle() );
        
    }

 Test case

   public void testSwitchWindow(){
       Helper review = new Helper ();
       String parentWindow = review.getParentWindow();
       review.clickAdd(add);      
       SeleniumUtils.switchToAnotherWindow(); 
       //do action on new window

       review.backToParentWindow(parentWindow);         
       Config.driver().navigate().refresh();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值