如何使用 Java 中的 Selenium WebDriver 关闭特定窗口?

seleniumautomation testingtesting toolsjava

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

getWindowHandle 方法用于存储焦点浏览器窗口的窗口句柄。我们必须添加 import java.util.Setimport java.util.List 语句以适应代码中的 Set 数据结构。

默认情况下,驱动程序对象只能访问父窗口的元素。为了将其焦点从父窗口切换到子窗口,我们将借助 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;
public class CloseSpecificWindow {
   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);
      //父窗口的窗口句柄
      String m = driver.getWindowHandle();
      driver.findElement(By.id("login-google-button")).click();
      // 将窗口句柄存储在 Set 中
      Set w = driver.getWindowHandles();
      // 迭代窗口句柄
      for (String h: w){
         // 切换到每个窗口
         driver.switchTo().window(h);
         String s= driver.getTitle();
         // 检查特定窗口标题
         if(s.equalsIgnoreCase("登录 - Google 帐户")){
            System.out.println("要关闭的窗口标题:"+ driver.getTitle());
            driver.close();
         }
      }
      // 切换父窗口
      driver.switchTo().window(m);
      driver.quit();
   }
}

输出


相关文章