How to get window size, resize or maximize window using Selenium WebDriver
Recently Updated - January 16, 2017
Selenium WebDriver supports getting the browser window size, resizing and maximizing window natively from its API, no JavaScript injections like window.resizeTo(X, Y); are necessary any more. Below shows the examples on how to achieve this in Selenium WebDriver C#, Ruby and Python bindings.
Ruby
In Ruby binding, window size can be retrieved from method driver.manage.window.size, which is a type of struct Selenium::WebDriver::Dimension defined here. To resize a window, one solution is to create a new Dimension object and assign it to property driver.manage.window.size. Alternatively, Ruby binding has provided a driver.manage.window.resize_to() method, which is equivalent to #size=, but accepts width and height arguments according to API here.
Environment Tested:
Mac OS Sierra, Ruby 2.3.1p112, Selenium 3.0.5, ChromDriver 2.26, GeckoDriver 0.13
Firefox 50.1, Chrome 55, PhantomJS 1.9.8
Example
require 'selenium-webdriver'
# get initial window size
driver = Selenium::WebDriver.for :firefox
puts driver.manage.window.size
# set window size using Dimension struct
target_size = Selenium::WebDriver::Dimension.new(1024, 768)
driver.manage.window.size = target_size
puts driver.manage.window.size
# resize window
driver.manage.window.resize_to(480, 320)
puts driver.manage.window.size
# maximize window
driver.manage.window.maximize
puts driver.manage.window.size
driver.quitOutput
#<struct Selenium::WebDriver::Dimension width=1341, height=810>
#<struct Selenium::WebDriver::Dimension width=1024, height=768>
#<struct Selenium::WebDriver::Dimension width=480, height=320>
#<struct Selenium::WebDriver::Dimension width=1804, height=1096>
C#
Similarly in C# binding, a browser window's size can be found out using driver.Manage().Window.Size property. The same IWindow interface also defines method Maximize() for maximizing the window. Although this interface doesn't provide a function to resize window directly like Ruby binding, it can be done by setting the Size property using System.Drawing.Size object1.
Environment Tested:
Windows 7, Selenium 2.39.0, Firefox 26.0
Example
using System;
using System.Drawing;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace BrowserWindowSizeApp {
internal class Program {
internal static void Main(string[] args) {
// get initial window size
IWebDriver driver = new FirefoxDriver();
Console.WriteLine(driver.Manage().Window.Size);
// set window size
driver.Manage().Window.Size = new Size(480, 320);
Console.WriteLine(driver.Manage().Window.Size);
// maximize window
driver.Manage().Window.Maximize();
Console.WriteLine(driver.Manage().Window.Size);
driver.Quit();
}
}
}Output
{Width=1341, Height=810}
{Width=480, Height=320}
{Width=1804, Height=1096}
Python
Unlike C# and Ruby bindings, Python binding doesn't offer properties to get/set window size, all get/set/maximize actions are available using methods defined in selenium.webdriver.remote.webdriver.
Environment Tested:
Window 7, Python 2.7, Selenium 2.40.0, Firefox 26.0
Example
from selenium import webdriver
# get initial window size
driver = webdriver.Firefox()
print driver.get_window_size()
# set window size
driver.set_window_size(480, 320)
print driver.get_window_size()
# maximize window
driver.maximize_window()
print driver.get_window_size()
driver.quit()Output
{u'width': 1341, u'height': 810}
{u'width': 480, u'height': 320}
{u'width': 1804, u'height': 1096}
Comparison
| Get window size | |
|---|---|
| Ruby | driver.manage.window.size |
| C# | driver.Manage().Window.Size; |
| Python | driver.get_window_size() |
| Set window size | |
| Ruby | size = Selenium::WebDriver::Dimension.new(width, height) driver.manage.window.size = size |
| C# | System.Drawing.Size windowSize = new System.Drawing.Size(width, height); driver.Manage().Window.Size = windowSize; |
| Python | - |
| Resize window | |
| Ruby | driver.manage.window.resize_to(width, height) |
| C# | - |
| Python | driver.set_window_size(width, height) |
| Maximize window | |
| Ruby | driver.manage.window.maximize |
| C# | driver.Manage().Window.Maximize(); |
| Python | driver.maximize_window() |
Related source code
-
Adding "System.Drawing" assembly reference to project is required first. ↩