Chirag Gupta
Chirag Gupta

Reputation: 21

automatic window close and switch back to parent window in selenium

Basic I am using maven with POM and I am unable to switch focus back on parent window after I perform a operation in second window and click send window close automatically and after that my Firefox driver does not work .

**I used three options mentioned below which are not working **

    public void switchWindow() {
        String handle = driver.getWindowHandle();
        Set<String> set = driver.getWindowHandles();
        set.remove(handle);
        if (set.size() >= 1) {
          driver.switchTo().window((String) set.toArray()[0]);
        }


  public WebDriver switchWindowByTitle(String title)
  {
      WebDriver popup = null;
      Set<String> windowIterator = driver.getWindowHandles();
      System.err.println("No of windows :  " + windowIterator.size());
      for (String s : windowIterator) {
          String windowHandle = s;
          popup = driver.switchTo().window(windowHandle);
          System.out.println("Window Title : " + popup.getTitle());
          System.out.println("Window Url : " + popup.getCurrentUrl());
          if (popup.getTitle().equals(title) ){
              System.out.println("Selected Window Title : " + popup.getTitle());
              return popup;
          }

      }
      System.out.println("Window Title :" + popup.getTitle());
      System.out.println();
      return popup;


 public WebDriver switchWindowByTitle(String title)
  {

 String currentWindow = driver.getWindowHandle();
    List<String> availableWindows = new ArrayList<String>(driver.getWindowHandles());

    for(String w : availableWindows)
    {
      if (w != currentWindow)
      {
        driver.switchTo().window(w);
        if (driver.getTitle().equalsIgnoreCase(title))
          return true;
        else
        {
          driver.switchTo().window(currentWindow);
        }
      }
    }
    return false;
  }

Upvotes: 2

Views: 11871

Answers (2)

Zdeněk Modr&#225;k
Zdeněk Modr&#225;k

Reputation: 1

I am using following in C# It also supports multiple tabs opened. Thread.Sleep is there just for test stability

    public static bool CloseCurrentTab(this IWebDriver driver)
    {
        var windowHandles = driver.WindowHandles;
        if (windowHandles.Count > 1)
        {
            driver.Close();
            driver.SwitchTo().Window(windowHandles[windowHandles.Count - 2]);
            Thread.Sleep(500);
            return true;
        }

        return false;

    }

Upvotes: 0

Guy
Guy

Reputation: 50809

You need to get the parent window handle before opening the new window and swith back to it after you finished with the new window.

// before opening the new window
String parentWindow = driver.getWindowHandle();

// after the new window was closed
driver.switchTo().window(parentWindow);

Upvotes: 3

Related Questions