【问题标题】:how to switch from parent window to child window using selenium webdriver如何使用 selenium webdriver 从父窗口切换到子窗口
【发布时间】:2023-05-22 12:15:01
【问题描述】:

我需要关闭一个子窗口并切换回父窗口来执行一些操作。

public static void nextTab() throws InterruptedException { 
    Set winSet = UIPage.getBaseWindow().getWindowHandles(); 
    List winList = new ArrayList(winSet); 
    String newTab = winList.get(winList.size() - 1); UIPage.getBaseWindow().switchTo().window(newTab);
    Thread.sleep(Constant.LONG_TIMEOUT_500); 
}

public static void prevTab() { 
    Set winSet = UIPage.getBaseWindow().getWindowHandles(); 
    List winList = new ArrayList(winSet); 
    UIPage.getBaseWindow().close(); 
    String oldTab = winList.get(winList.size() - 2); //System.out.println(oldTab);
    UIPage.getBaseWindow().switchTo().window(oldTab);    
}

【问题讨论】:

标签: java selenium


【解决方案1】:

//Get the main window handle

String mainWindowHandle = driver.getWindowHandle();

现在执行打开子窗口的操作,例如单击链接或按钮。

//Switch to child window and close it

for (String childWindowHandle : driver.getWindowHandles()) {
  //If window handle is not main window handle then close it 
  if(!childWindowHandle.equals(mainWindowHandle)){
  driver.switchTo().window(childWindowHandle);
  // Close child windows
  driver.close(); 
  }
} 

//switch back to main window
driver.switchTo().window(mainWindowHandle);

【讨论】:

  • 这是有效的,但它是打开两次父或子窗口。在for循环中我只想调用一次子窗口.plz帮助
  • 嗨 Ram Kishore,更新了代码以关闭唯一的子窗口。看看,如果这不起作用,请告诉我。
  • 您好 Prudhvi,更新的代码不起作用。如果我运行此代码,所有当前和主窗口都已关闭。请帮助...
  • 如何从第二个子窗口切换到第一个子窗口?请帮助。
  • 嗨 Kishore,您能否在 for 循环之前和 for 循环中添加打印语句并将结果发送给我