1. 程式人生 > 程式設計 >selenium 多視窗切換的實現(windows)

selenium 多視窗切換的實現(windows)

在web應用中,常常會遇見點選某個連結會彈出一個新的視窗,或者是相互關聯的web應用 ,這樣要去操作新視窗中的元素,這時就需要主機切換到新視窗進行操作。。WebDriver 提供了switchTo().window()方法可以實現在不同的視窗之間切換。

以下程式碼是以新浪網為例項。通過獲取控制代碼切換到指定視窗,並關閉視窗。當然切換到指定視窗,也可以通過元素定位等方法對元素進行操作。

getWindowHandle():獲得當前視窗控制代碼。

getWindowHandles():返回的所有視窗的控制代碼到當前會話。

switchTo().window():用於切換到相應的視窗,與上一節的switchTo().frame()類似,前者用於不同視窗的切換,後者用於不同表單之間的切換。

public static void main(String[] args) throws InterruptedException {

System.setProperty("webdriver.chrome.driver","D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
WebDriver driver = new ChromeDriver(Options);
driver.manage().window().maximize();
// 視窗最大化
driver.get("http://www.sina.com.cn/");
driver.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
// 設定元素等待時間 ,隱式等待
String sreachHand = driver.getWindowHandle();
// 獲取當前視窗的控制代碼
driver.findElement(By.linkText("體育")).click();
// 開啟新浪官網上的體育連結
driver.findElement(By.linkText("娛樂")).click();
// 開啟新浪官網上的娛樂連結
java.util.Set<String> Handles = driver.getWindowHandles();
System.out.println(Handles.size() + "集合長度");
// 獲取所有視窗的控制代碼並將控制代碼放在Set集合中。
// 以下判斷是否是新浪網首頁,如果是則關閉新浪網首頁。
for (String i : Handles) {
if (i.equals(sreachHand)) {
driver.switchTo().window(i);
Thread.sleep(5000);
driver.close();

}
}

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。