MainMenu

Home Java Overview Maven Tutorials

Tuesday 13 February 2018

How To Handle Tabs in selenium




Hello Friends,

In this article , i will describe that how to handle the Tabs in selenium.
So we will cover below scearios :

For Video part 1:

Click here



For Video part 2:

Click here



Scenario :1-
Open the browser & enter Url Open a new tab
Hit a url in new tab
perform some operation in new tab
come back to main tab

Scenario :2-
Open the browser & enter Url
click some link which will open the new tab
switch to newly opened tab
perform some operation
come back to main tab
Scenario :3-
Open the browser & enter Url click on link which will open the new tab
switch to newly opened tab
close newly opened tab only
perform some operation in your main tab

So, here we will write some simple code to do these operations :-

Method 1

Selenium 3


import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.testng.annotations.Test;
public class practice
{
WebDriver driver;
@Test
public void tabs() throws InterruptedException, AWTException
{ System.setProperty("webdriver.chrome.driver", "./Driver\\chromedriver_99.exe");
System.setProperty(ChromeDriverService.CHROME_DRIVER_SILENT_OUTPUT_PROPERTY, "true");
System.setProperty("webdriver.chrome.silentOutput", "true");
driver = new ChromeDriver();
driver.manage().window().maximize();
Thread.sleep(2000);

driver.navigate().to("https://google.com");
Thread.sleep(5000);
driver.findElement(By.name("q")).sendKeys("way2testing");
driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
Thread.sleep(2000);
String parentwindow = driver.getWindowHandle();
//Open the New Tab
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_T);
driver.switchTo().window(parentwindow);
Thread.sleep(2000);
ArrayList tabs = new ArrayList(driver.getWindowHandles());
System.out.println(tabs.size());
driver.switchTo().window((String) tabs.get(1));
Thread.sleep(2000);
driver.navigate().to("http://www.way2testing.com");
}
}



Method 2

Selenium 4


import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WindowType;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.testng.annotations.Test;
public class practice
{
WebDriver driver;
@Test
public void tabs() throws InterruptedException, AWTException
{
System.setProperty("webdriver.chrome.driver", "./Driver\\chromedriver_99.exe");
System.setProperty(ChromeDriverService.CHROME_DRIVER_SILENT_OUTPUT_PROPERTY, "true");
System.setProperty("webdriver.chrome.silentOutput", "true");
driver = new ChromeDriver();
driver.manage().window().maximize();
Thread.sleep(2000);
driver.navigate().to("https://google.com");
Thread.sleep(5000);
driver.findElement(By.name("q")).sendKeys("way2testing");
driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
Thread.sleep(2000);
String parentwindow = driver.getWindowHandle();
//Open the New Tab
driver.switchTo().newWindow(WindowType.TAB);
driver.navigate().to("http://www.way2testing.com");
Thread.sleep(3000);
driver.findElement(By.xpath("//*[@id='myTopnav']/a[1]/b")).click();
//Switch Back to previous window
driver.switchTo().window(parentwindow);
}
}

Before Selenium 4, we were using getWindowHandle & getWindowHandles methods.

driver.getWindowHandle() will return the String so below is syntax :

String currentwindow = driver.getWindowHandle();

Set windows = driver.getWindowHandles(); OR
List list = driver.getWindowHandles();


but in Selenium 4 We can handle the tabs as below :-
WebDriver newTab = driver.switchTo().newWindow(WindowType.TAB)
WebDriver newwndow = driver.switchTo().newWindow(WindowType.WINDOW);

No comments:

Post a Comment