如何在 Selenium 中將焦點切換至新的彈出選項卡?


我們可以使用 Selenium 驅動程式將焦點切換到新的彈出選項卡。getWindowHandlesgetWindowHandle 方法可用於處理新的彈出選項卡。getWindowHandles 方法將所有當前開啟的視窗控制代碼儲存在設定資料結構中。

getWindowHandle 方法將處於焦點狀態的開啟瀏覽器的視窗控制代碼儲存起來。迭代器方法用於在所有視窗控制代碼 ID 上進行迭代。我們必須新增import java.util.Set 來容納集合,並新增import java.util.Listimport java.util.Iterator 語句來容納我們程式碼中的迭代器。

Selenium 驅動程式物件可以訪問父視窗的元素。為了將焦點從父視窗切換到新的彈出選項卡,我們將藉助 switchTo().window 方法,並將彈出視窗的視窗控制代碼 ID 作為該方法的引數傳遞。

示例

程式碼實現。

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 SwitchToPopup {
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      driver.get("https://secure.indeed.com/account/login");
      //implicit wait
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      driver.findElement(By.id("login-google-button")).click();
      // window handles
      Set wnd = driver.getWindowHandles();
      // window handles iterate
      Iterator i = wnd.iterator();
      String popwnd = i.next();
      String prntw = i.next();
      // switching pop up tab
      driver.switchTo().window(popwnd);
      System.out.println("Page title of popup: "+ driver.getTitle());
      // closes all windows
      driver.quit();
   }
}

輸出

更新於: 2020 年 10 月 26 日

瀏覽 4K+

開啟你的 職業

完成課程即可獲得認證

立即開始
廣告
© . All rights reserved.