如何在 Selenium 中将焦点切换至新的弹出选项卡?

seleniumautomation testingtesting tools更新于 2026/2/10 7:52:17

我们可以使用 Selenium WebDriver 将焦点切换至新的弹出选项卡。getWindowHandles 和 getWindowHandle 方法可用于处理新的弹出选项卡。getWindowHandles 方法将所有当前打开的窗口句柄存储在 Set 数据结构中。

getWindowHandle 方法将焦点所在的已打开浏览器的窗口句柄存储在 Set 数据结构中。iterator 方法用于迭代所有窗口句柄 ID。我们需要在代码中添加 import java.util.Set 语句来支持 Set,并添加 import java.util.List 和 import 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");
      //隐式等待
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      driver.findElement(By.id("login-google-button")).click();
      // 窗口句柄
      Set wnd = driver.getWindowHandles();
      // 窗口句柄迭代
      Iterator i = wnd.iterator();
      String popwnd = i.next();
      String prntw = i.next();
      // 切换弹出标签页
      driver.switchTo().window(popwnd);
      System.out.println(&" 弹出窗口的页面标题: &"+ driver.getTitle());
      // 关闭所有窗口
      driver.quit();
   }
}

输出


相关文章