Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Switch between browser tabs using Selenium WebDriver with Java

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.

like image 735
mahi Avatar asked Aug 27 '14 10:08

mahi


People also ask

How do you switch between tabs in Java?

sendKeys(clickl); Then hold all the opened window ids in an ArrayList and shift the driver focus to the new tab with the switchTo method. Then pass the window id of the new tab as an argument to that method.

Can I navigate back and forth in a browser in Selenium WebDriver?

WebDriver provides some basic Browser Navigation Commands that allows the browser to move backwards or forwards in the browser's history. Just like the browser methods provided by WebDriver, we can also access the navigation methods provided by WebDriver by typing driver. navigate() in the Eclipse panel.


2 Answers

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!

like image 124
Fahim Hossain Avatar answered Oct 13 '22 23:10

Fahim Hossain


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();
like image 23
nitesh Avatar answered Oct 14 '22 00:10

nitesh