【java+selenium3】多窗口window切换及句柄handle获取(四)

一 、页面准备

1.html

<html>
    <head>
        <title>主页面 1</title>
    </head>
    <body>
        <div>
            主页面 1 :<input type="text" id="input_1" value=""/><br><br>
            <a href="./2.html" target="_blank">点击这里跳转新页面 2 </a><br><br>
            <a href="./3.html" target="_blank">点击这里跳转新页面 3 </a><br><br>
        </div>
    </body>
</html>

2.html

<html>
    <head>
        <title>新页面 2</title>
    </head>
    <body>
        <div>
            新页面 2 :<input type="text" id="input_2"/>
        </div>
    </body>
</html>

3.html

<html>
    <head>
        <title>新页面 3</title>
    </head>
    <body>
        <div>
            新页面 3 :<input type="text" id="input_3"/>
        </div>
    </body>
</html>

二、句柄

1.获取当前窗口的句柄(String类型)

String handle = driver.getWindowHandle();

2.获取所有带开窗口的句柄(set<String>)

//获取当前打开窗口的所有句柄
Set<String> handles = driver.getWindowHandles();

三、项目实战

package cn.test;

import java.util.ArrayList;
import java.util.Set;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Test {
    
    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
        WebDriver driver =null;
        try {
            driver = new ChromeDriver();
            driver.get("file:///C:/Users/Administrator/Desktop/test/1.html");
            driver.manage().window().maximize();
            driver.findElement(By.id("input_1")).sendKeys("主页面 1 写入数据");
            Thread.sleep(2000);
            //获取主页面1句柄
            String handle1 = driver.getWindowHandle();
            System.out.println("主页面1句柄:"+handle1);
            //点击页面2的超链接跳转后,在页面2文本框输入数据
            driver.findElement(By.partialLinkText("点击这里跳转新页面 2")).click();
            String handle = getLastHandle(driver);
            System.out.println("新页面2句柄:"+handle);
            //获取到页面2的句柄,将driver作用域切到页面2
            driver.switchTo().window(handle);
            driver.findElement(By.id("input_2")).sendKeys("新打开页面 2 输入数据");
            
            //返回主页面1点击打开新页面3 
            //利用页面1的句柄,将driver作用域切回到页面1
            driver.switchTo().window(handle1);
            //点击页面3的超链接跳转后,在页面3文本框输入数据
            driver.findElement(By.partialLinkText("点击这里跳转新页面 3")).click();
            handle = getLastHandle(driver);
            System.out.println("新页面3句柄:"+handle);
            driver.switchTo().window(handle);
            driver.findElement(By.id("input_3")).sendKeys("新打开页面 3 输入数据");
            Thread.sleep(2000);
            //关闭新打开的页面窗口3
            driver.close();
            Thread.sleep(5000);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            driver.quit();
        }
    }

    /**
     * @param driver
     * @return 当前打开窗口的最后一个句柄
     */
    public static String getLastHandle(WebDriver driver) {
        //获取当前打开窗口的所有句柄
        Set<String> Allhandles = driver.getWindowHandles();
        ArrayList<String> lst = new ArrayList<String>(Allhandles);
        return lst.get(lst.size()-1);
    }    
}

四、学习后总结,不足之处后续补充。。。

转载于:https://www.cnblogs.com/xiaozhaoboke/p/11127820.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值