2

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;
  }
Chirag Gupta
  • 21
  • 1
  • 1
  • 3
  • Can you please refer http://stackoverflow.com/questions/19112209/how-to-handle-the-new-window-in-selenium-webdriver and see this resolves your query? – Abdul Hameed Jan 19 '16 at 18:19
  • @AbdulHameed:- I have already referred the above link and if you can look my second option is the same one – Chirag Gupta Jan 20 '16 at 03:57

2 Answers2

3

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);
Guy
  • 46,488
  • 10
  • 44
  • 88
  • I have already tried the above suggestion and its not working , Basically I am using My own web driver, Please refer the url mention below for further reference https://www.dropbox.com/s/2avinp6qhxguv96/TestWebDriver.java?dl=0&preview=TestWebDriver.java – Chirag Gupta Jan 20 '16 at 04:37
  • @ChiragGupta After the pop up is closed does `driver.getWindowHandles()` has one window, or does it recognize more windows? – Guy Jan 21 '16 at 10:09
0

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;

    }