Selenium 能否處理基於 Windows 的彈出視窗?


Selenium 可以處理基於 Windows 的彈出視窗。在對網頁執行某些操作後,可能會出現網頁開啟多個視窗的情況。開啟的子視窗可能是包含一些資訊或廣告的彈出視窗。

Selenium 使用 **getWindowHandles()** 和 **getWindowHandle()** 方法來處理子視窗。getWindowHandles() 方法包含所有已開啟視窗的視窗控制代碼 ID。視窗 ID 控制代碼以 Set 資料結構的形式儲存[包含字串資料型別]。

getWindowHandle() 方法用於儲存當前活動視窗的視窗控制代碼 ID。眾所周知,getWindowHandles() 方法用於儲存所有已開啟視窗的控制代碼 ID。為了迭代所有控制代碼,使用 iterator() 和 next() 方法。

由於 getWindowHandles() 以 Set 資料結構的形式儲存視窗 ID,因此我們必須在程式碼中 **import java.util.Set**。此外,為了使用 iterator() 方法,我們必須 **import java.util.Iterator** 和 **import java.util.List**。

最後,要切換到特定視窗,使用 switchTo.().window() 方法。要切換到的視窗的控制代碼 ID 將作為引數傳遞給該方法。

實現上述概念的步驟:

  • 應用程式啟動後,讓我們首先使用 getWindowHandles() 方法將所有視窗控制代碼 ID 儲存在 Set 資料結構中。

  • 我們將使用 iterator() 和 next() 方法迭代所有視窗控制代碼 ID。

  • 然後,讓我們使用 getWindowHandle() 方法獲取當前視窗控制代碼 ID。

  • 然後使用 switchTo.().window() 方法切換到該視窗。

示例

程式碼實現。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import java.util.List;
import java.util.Set;
import java.util.Iterator;
public class HandleWindows {
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url = "https://secure.indeed.com/account/login";
      driver.get(url);
      //implicit wait
      driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
      // store all window handles
      Set<String> a = driver.getWindowHandles();
      // iterate through handles
      Iterator<String> it = a.iterator();
      String chlwnd = it.next();
      String pwnd = it.next();
      // switch to child window
      driver.switchTo().window(chlwnd);
      System.out.println("Page title "+ driver.getTitle());
      // switch to parent window
      driver.switchTo().window(pwnd);
      System.out.println("Page title "+ driver.getTitle());
      driver.quit();

更新於:2020年8月28日

4K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.