7

I need to switch between the browser tabs, used the following code,

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");

It was working properly sometimes only, but sometimes it is showing an exception. Can anyone suggest me is there any other instructions for switching tabs within a single window by using java.

Ripon Al Wasim
  • 36,924
  • 42
  • 155
  • 176
mahi
  • 191
  • 1
  • 2
  • 16
  • When it is throwing errors and what exception you're getting? – Vignesh Paramasivam Aug 27 '14 at 10:59
  • 3
    possible duplicate of [switch tabs using selenium Webdriver](http://stackoverflow.com/questions/12729265/switch-tabs-using-selenium-webdriver) – Vignesh Paramasivam Aug 27 '14 at 11:03
  • Iam geting the following exception : Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died. – mahi Aug 27 '14 at 11:25

3 Answers3

8

You have to use window handle function here. Here is a sample working code in java:

    String parentHandle = driver.getWindowHandle(); // get the current window handle
    System.out.println(parentHandle);               //Prints the parent window handle 
    String anchorURL = anchor.getAttribute("href"); //Assuming u are clicking on a link which opens a new browser window
    anchor.click();                                 //Clicking on this window
    for (String winHandle : driver.getWindowHandles()) { //Gets the new window handle
        System.out.println(winHandle);
        driver.switchTo().window(winHandle);        // switch focus of WebDriver to the next found window handle (that's your newly opened window)              
    }
//Now your driver works on the current new handle
//Do some work here.....
//Time to go back to parent window
    driver.close();                                 // close newly opened window when done with it
    driver.switchTo().window(parentHandle);         // switch back to the original window

Hope this helps!

Fahim Hossain
  • 1,671
  • 13
  • 16
3

Switching between browser window is different from switching b/w tabs.

In some browser windowhandler command may work but it wont work in all browser.

Here is the solution to navigate b/w tabs

for navigating left to right side:

Actions action= new Actions(driver);
action.keyDown(Keys.CONTROL).sendKeys(Keys.TAB).build().perform();

For navigating right to left :

Actions action= new Actions(driver);
action.keyDown(Keys.CONTROL).keyDown(Keys.SHIFT).sendKeys(Keys.TAB).build().perform();
Serg
  • 22,285
  • 5
  • 21
  • 48
nitesh
  • 31
  • 1
0

In my case, the following code is working fine-

String oldTab=driver.getWindowHandle();
    driver.findElement(pageObj.getL_Popup_Window()).click();
     ArrayList<String> newTab = new ArrayList<String>(driver.getWindowHandles());
        newTab.remove(oldTab);
        driver.switchTo().window(newTab.get(0));
    WebElement ele = driver.findElement(pageObj.getI_input_name());
    ele.click();
    ele.sendKeys(name);
    driver.findElement(pageObj.getI_submit()).click();
    driver.switchTo().window(oldTab);
Shivam Bharadwaj
  • 1,864
  • 21
  • 23