当前位置: 首页 > 知识库问答 >
问题:

如何在selenium WebDriver中将控件从子窗口切换到父窗口?

茹康裕
2023-03-14

>

  • 我正在将控件从父窗口传递到子窗口
  • 我正在子窗口中执行操作
  • 执行后,将从子窗口再打开一个窗口(第一个子窗口的子窗口)。
  • 我必须关闭两个子窗口并返回父窗口。

    我无法将控件从子窗口切换到父窗口。我已经试用了下面的代码

     String winHandleBefore = _driver.getWindowHandle();
    for(String winHandle : _driver.getWindowHandles()){
        _driver.switchTo().window(winHandle);
    }
    
    String winHandleAfter = _driver.getWindowHandle();
    

    /在子窗口中执行操作/

    driver.close();
    _driver.switchTo().window(winHandleBefore);
    
  • 共有2个答案

    轩辕欣可
    2023-03-14

    像这样试试。

    1. 关闭第二个子窗口
    2. 然后有两个窗口主窗口和第一个子窗口
    3. 尝试getWindowhandles();它应该返回2个窗口句柄。
    4. 从两个窗口句柄中提取主窗口句柄。
    5. 使用以上窗口句柄切换回主窗口。

    Driver.SwitchTo().DefaultContent();

    http://santoshsarmajv.blogspot.in/2012/04/how-to-switch-control-to-pop-up-window.html

    步衡
    2023-03-14

    使用此代码:

     // Get Parent window handle
     String winHandleBefore = _driver.getWindowHandle();
     for (String winHandle : _driver.getWindowHandles()) {
       // Switch to child window
       driver.switchTo().window(winHandle);
     }
    
    // Do some operation on child window and get child window handle.
    String winHandleAfter = driver.getWindowHandle();
    
    //switch to child window of 1st child window.
    for(String winChildHandle : _driver.getWindowHandles()) {
      // Switch to child window of the 1st child window.
      if(!winChildHandle.equals(winHandleBefore) 
      && !winChildHandle.equals(winHandleAfter)) {
        driver.switchTo().window(winChildHandle);
       }
     }
    
    // Do some operation on child window of 1st child window.
    // to close the child window of 1st child window.
    driver.close();
    
    // to close the child window.
    driver.close();
    
    // to switch to parent window.
    driver.switchto.window(winHandleBefore);
    
     类似资料: