【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);
    }    
}

四、學習后總結,不足之處后續補充。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM