Sometimes there might be a situations where you need to test the application by changing the windows size or you need to see what is the current size of the window where the page is rendered. Selenium provides certain methods to deal with such situations. Lets see some of the common methods used.
The method driver.manage().window().minimize() minimizes the current window if it is not already minimized.
The method driver.manage().window().maximize() maximizes the current window if it is not already maximized
The method driver.manage().window().fullscreen() fullscreen the current window if it is not already fullscreen
The method driver.manage().window().getSize() get the size of the current window. This will return the outer window dimension.
The method driver.manage().window().setSize() set the size of the current window. This will change the outer window dimension.
Following example covers all the above method implementation.
Java
C#
Python
Javascript
Kotlin
WebDriver driver = new ChromeDriver();
driver.get("http://localhost:8080/demo/browsers/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
driver.manage().window().minimize();
driver.manage().window().fullscreen();
Dimension winSize = driver.manage().window().getSize();
System.out.println("Width : " + winSize.width + ", Height : " + winSize.height);
driver.manage().window().setSize(new Dimension(400,600));
driver.manage().window().maximize();
driver.quit();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:8080/demo/browsers/";
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
driver.Manage().Window.Maximize();
driver.Manage().Window.Minimize();
driver.Manage().Window.FullScreen();
Size winSize = driver.Manage().Window.Size;
Console.WriteLine("Width : " + winSize.Width + ", Height : " + winSize.Height);
driver.Manage().Window.Size = new Size(400, 600);
driver.Manage().Window.Maximize();
driver.Quit();
driver = webdriver.Chrome()
driver.get("http://localhost:8080/demo/browsers/")
driver.implicitly_wait(30)
driver.maximize_window()
driver.minimize_window()
driver.fullscreen_window()
winSize = driver.get_window_size()
print("Width : " + winSize.get("width") + ", Height : " + winSize.get("height"))
driver.set_window_size(400,600)
driver.maximize_window()
driver.quit()
let driver = await new Builder().forBrowser('chrome').build();
await driver.get("http://localhost:8080/demo/browser/");
await driver.manage().setTimeouts({ implicit: 30000 });
await driver.manage().window().maximize();
await driver.manage().window().minimize();
await driver.manage().window().fullscreen();
let winSize = await driver.manage().window().getSize();
console.log("Width : " + winSize.width + ", Height : " + winSize.height);
await driver.manage().window().setSize(400,600);
await driver.manage().window().maximize();
await driver.quit();
val driver: WebDriver = ChromeDriver()
driver["http://localhost:8080/demo/browsers/"]
driver.manage().window().maximize()
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30))
driver.manage().window().minimize()
driver.manage().window().fullscreen()
val winSize: Dimension = driver.manage().window().size
println(("Width : " + winSize.width) + ", Height : " + winSize.height)
driver.manage().window().size = Dimension(400, 600)
driver.manage().window().maximize()
driver.quit()
Handling windows is a crucial aspect of Selenium automation, especially when dealing with web applications that involve multiple browser windows or tabs. Selenium provides methods in the WebDriver interface to handle window management scenarios.
To get the handle of the current window, selenium uses getWindowHandle() method of WebDriver interface
To get handles of all currently open windows, selenium uses getWindowHandles() method of WebDriver interface. This will return a set of strings.
To switch to a specific window using its handle, driver.switchTo().window(windowHandle) is used. It will switch the focus of future commands for this driver to the window with the given handle. If the handle or window does not exist, it will throw NoSuchWindowException.
The method getCurrentUrl() is used to get the current URL that the browser is looking at.
The method getTitle() of WebDriver will return the title of the current page, with leading and trailing whitespace stripped, or null if one is not already set.
The method close() is used to close the current window, quitting the browser if it's the last window currently open.
Let's see the implementation of these methods in the following example.
Java
C#
Python
Javascript
Kotlin
WebDriver driver = new ChromeDriver();
driver.get("http://loalhost:8080/demo/browsers/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
//Getting first window handle
String firstWindowHandle = driver.getWindowHandle();
//Click on link to open second window
driver.findElement(By.id("page2Link")).click();
//Getting all opened window handles
Set<String> allOpenWindowHandles = driver.getWindowHandles();
//Looping through all window handles to switch to new window handle
for (String windowHandle : allOpenWindowHandles)
{
if(!windowHandle.equals(firstWindowHandle))
{
driver.switchTo().window(windowHandle);
break;
}
}
//Getting title of new window
String page2Title = driver.getTitle();
System.out.println(page2Title);
//Getting new window url
String page2Url = driver.getCurrentUrl();
System.out.println(page2Url);
//Closing the new window
driver.close();
//switching back to first window
driver.switchTo().window(firstWindowHandle);
driver.quit();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:8080/demo/browsers/";
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
driver.Manage().Window.Maximize();
//Getting first window handle
String firstWindowHandle = driver.CurrentWindowHandle;
//Click on link to open second window
driver.FindElement(By.Id("page2Link")).Click();
//Getting all opened window handles
var allOpenWindowHandles = driver.WindowHandles;
//Looping through all window handles to switch to new window handle
foreach (String windowHandle in allOpenWindowHandles)
{
if (!windowHandle.Equals(firstWindowHandle))
{
driver.SwitchTo().Window(windowHandle);
break;
}
}
//Getting title of new window
String page2Title = driver.Title;
Console.WriteLine(page2Title);
//Getting new window url
String page2Url = driver.Url;
Console.WriteLine(page2Url);
//Closing the new window
driver.Close();
//switching back to first window
driver.SwitchTo().Window(firstWindowHandle);
driver.Quit();
driver = webdriver.Chrome()
driver.get("http://loalhost:8080/demo/browsers/");
driver.maximize_window()
driver.implicitly_wait(30)
# Getting first window handle
firstWindowHandle = driver.current_window_handle
# Click on link to open second window
driver.find_element(By.ID, "page2Link").click()
# Getting all opened window handles
allOpenWindowHandles = driver.window_handles
# Looping through all window handles to switch to new window handle
for windowHandle in allOpenWindowHandles:
if windowHandle != firstWindowHandle:
driver.switch_to.window(windowHandle)
break
# Getting title of new window
page2Title = driver.title
print(page2Title)
# Getting new window url
page2Url = driver.current_url
print(page2Url)
# Closing the new window
driver.close()
# switching back to first window
driver.switch_to.window(firstWindowHandle)
driver.quit()
let driver = await new Builder().forBrowser('chrome').build();
await driver.get("http://localhost:8080/demo/browser/");
await driver.manage().window().maximize();
await driver.manage().setTimeouts({ implicit: 30000 });
//Getting first window handle
let firstWindowHandle = await driver.getWindowHandle();
//Click on link to open second window
await driver.findElement(By.id("page2Link")).click();
//Getting all opened window handles
let allOpenWindowHandles = await driver.getAllWindowHandles();
//Looping through all window handles to switch to new window handle
for (let windowHandle of allOpenWindowHandles)
{
if(windowHandle !== firstWindowHandle)
{
await driver.switchTo().window(windowHandle);
break;
}
}
//Getting title of new window
let page2Title = await driver.getTitle();
console.log(page2Title);
//Getting new window url
let page2Url = await driver.getCurrentUrl();
console.log(page2Url);
//Closing the new window
await driver.close();
//switching back to first window
await driver.switchTo().window(firstWindowHandle);
await driver.quit();
val driver: WebDriver = ChromeDriver()
driver["http://loalhost:8080/demo/browsers/"]
driver.manage().window().maximize()
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30))
//Getting first window handle
val firstWindowHandle = driver.windowHandle
//Click on link to open second window
driver.findElement(By.id("page2Link")).click()
//Getting all opened window handles
val allOpenWindowHandles = driver.windowHandles
//Looping through all window handles to switch to new window handle
for (windowHandle in allOpenWindowHandles) {
if (windowHandle != firstWindowHandle) {
driver.switchTo().window(windowHandle)
break
}
}
//Getting title of new window
val page2Title = driver.title
println(page2Title)
//Getting new window url
val page2Url = driver.currentUrl
println(page2Url)
//Closing the new window
driver.close()
//switching back to first window
driver.switchTo().window(firstWindowHandle)
driver.quit()