一 、頁面准備
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); } }
四、學習后總結,不足之處后續補充。。。