如何使用 Java 关闭 Selenium WebDriver 中的子浏览器窗口?

seleniumautomation testingtesting toolsjava

我们可以在 Selenium webdriver 中关闭子浏览器窗口。getWindowHandlesgetWindowHandle 方法可用于处理子窗口。getWindowHandles 方法用于将所有打开的窗口句柄存储在 Set 数据结构中。

getWindowHandle 方法用于存储当前活动的浏览器窗口。要遍历窗口句柄,请使用 iterator 方法。我们必须在代码中添加 import java.util.Set 以容纳 Set,并添加 java.util.List import java.util.Iterator 语句以容纳迭代器。

默认情况下,驱动程序对象可以访问父窗口的元素。为了将其焦点从父窗口切换到子窗口,我们将借助 switchTo().window 方法并将子窗口的窗口句柄 id 作为参数传递给该方法。然后,为了从子窗口移动到父窗口,我们将借助 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 CloseChildWindow {
   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(2, TimeUnit.SECONDS);
      driver.findElement(By.id("login-google-button")).click();
      // 窗口句柄
      set w = driver.getWindowHandles();
      // 窗口句柄迭代
      Iterator t = w.iterator();
      String ch = t.next();
      String pw = t.next();
      // 切换子窗口
      driver.switchTo().window(ch);
      System.out.println("子窗口标题"+ driver.getTitle());
      // 关闭子浏览器窗口
      driver.close();
      // 切换父窗口
      driver.switchTo().window(pw);
      System.out.println("Parent window title: "+ driver.getTitle());
      driver.quit();

输出


相关文章