设为首页收藏本站
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

Selenium Webdriver 中文教程 (九)切换浏览器窗口

2015-7-24 18:03| 发布者: webdriver| 查看: 9307| 评论: 0|原作者: MR_BC|来自: Webdriver中文社区

摘要: selenium java 自动化 切换浏览器窗口

在浏览器中有多个窗口的时候,想切到指定的窗口,就需要根据windows窗口的handle来切换,每一个窗口都有一个handle标识。下面就介绍一下根据页面title获取窗口handle的方法。

 

public  boolean switchToWindow(String windowTitle,WebDriver dr){  

 

    boolean flag = false;  

    try { 

 

 //获取当前窗口的handle

        String currentHandle = dr.getWindowHandle();  

 

//将页面上所有的windowshandle放在入set集合当中

 

        Set<String> handles = dr.getWindowHandles();

  

    //循环遍历这个集合中的元素

        for (String s : handles) {

        

    //如果和当前的窗口的handle一样,跳出本次循环,继续下次一循环

            if (s.equals(currentHandle))  

                continue;  

            else {  

    //如果不一样就切换到那个handle,对比这个页面中的title是否包含传入的windowtitle。如果是就返回true,跳出循环了。如果title不一样就跳出本次循环,继续循环对比。

             dr.switchTo().window(s);

                if (dr.getTitle().contains(windowTitle)) {  

                    flag = true;  

                    System.out.println("Switch to window: "  

                            + windowTitle + " successfully!");  

                    break;  

                } else  

                    continue;  

            }  

        }  

    } catch (Exception e) {  

        System.out.printf("Window: " + windowTitle  

                + " cound not found!", e.fillInStackTrace());  

        flag = false;  

    }  

    return flag;  

 

PsBreakContinue的区别,Break是跳出整个循环体,Continue是跳出本次循环。

 

附上一个切换窗口的Demo

 

打开夜神官网www.bignox.com,点击“游戏论坛”和“游戏中心”链接,然后切换窗口至游戏中心,点击开发者提交游戏的入口。

package com.cxy.cn;

 

import java.util.Set;

 

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

 

public class ChinaWebDriverTest05 {

public static boolean switchToWindow(String windowTitle,WebDriver dr){  

    boolean flag = false;  

    try { 

//      将页面上所有的windowshandle放在入set集合当中

        String currentHandle = dr.getWindowHandle();  

        Set<String> handles = dr.getWindowHandles();  

        for (String s : handles) {  

            if (s.equals(currentHandle))  

                continue;  

            else {  

             dr.switchTo().window(s);

//                 和当前的窗口进行比较如果相同就切换到windowhandle

//                 判断title是否和handles当前的窗口相同

                if (dr.getTitle().contains(windowTitle)) {  

                    flag = true;  

                    System.out.println("Switch to window: "  

                            + windowTitle + " successfully!");  

                    break;  

                } else  

                    continue;  

            }  

        }  

    } catch (Exception e) {  

        System.out.printf("Window: " + windowTitle  

                + " cound not found!", e.fillInStackTrace());  

        flag = false;  

    }  

    return flag;  

public static void main(String args[]){

System.setProperty("webdriver.chrome.driver""C:\\browser\\chromedriver.exe");

 

WebDriver driver = new ChromeDriver();

driver.get("http://www.bignox.com");

driver.findElement(By.linkText("游戏论坛")).click();

driver.findElement(By.linkText("游戏中心")).click();

try {

Thread.sleep(5000);

catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

ChinaWebDriverTest05.switchToWindow("游戏中心_夜神安卓模拟器", driver);

driver.findElement(By.linkText("开发者提交游戏")).click();

try {

Thread.sleep(5000);

catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

driver.quit();

}

 

}

鲜花
鲜花 (1)
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋

刚表态过的朋友 (1 人)

收藏 分享 邀请

最新评论