Open and close a browser with Selenium
Once you have a Selenium library installed, and your desired browser driver, you can start and stop a session with a browser.
Typically, browsers are started with specific options that describe which capabilities the browser must support, and how the browser should behave during the session. Some capabilities are shared by all browsers, and some will be specific to the browser being used. This page will show examples of starting a browser with the default capabilities.
After learning how to start a session, check out the next session on how to write your first Selenium script
Chrome
By default, Selenium 4 is compatible with Chrome v75 and greater. Note that the version of the Chrome browser and the version of chromedriver must match the major version.
In addition to the shared capabilities, there are specific Chrome capabilities that can be used.
ChromeOptions options = new ChromeOptions();
driver = new ChromeDriver(options);
driver.quit();
options = ChromeOptions()
driver = webdriver.Chrome(options=options)
driver.quit()
var options = new ChromeOptions();
var driver = new ChromeDriver(options);
driver.Quit();
options = Selenium::WebDriver::Options.chrome
driver = Selenium::WebDriver.for :chrome, options: options
driver.quit
const {Builder} = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
(async function openChromeTest() {
try {
let options = new chrome.Options();
let driver = await new Builder()
.setChromeOptions(options)
.forBrowser('chrome')
.build();
await driver.get('https://www.google.com');
await driver.quit();
} catch (error) {
console.log(error)
}
})();
val options = ChromeOptions()
val driver = ChromeDriver(options)
driver.quit()
Edge
Microsoft Edge is implemented with Chromium, with the earliest supported version of v79. Similar to Chrome, the major version number of edgedriver must match the major version of the Edge browser.
EdgeOptions options = new EdgeOptions();
driver = new EdgeDriver(options);
driver.quit();
options = EdgeOptions()
driver = webdriver.Edge(options=options)
driver.quit()
var options = new EdgeOptions();
var driver = new EdgeDriver(options);
driver.Quit();
options = Selenium::WebDriver::Options.edge
driver = Selenium::WebDriver.for :edge, options: options
driver.quit
const {Builder} = require('selenium-webdriver');
const edge = require('selenium-webdriver/edge');
(async function openEdgeTest() {
try {
let options = new edge.Options();
let driver = await new Builder()
.setChromeOptions(options)
.forBrowser('edge')
.build();
await driver.get('https://www.google.com');
await driver.quit();
} catch (error) {
console.log(error)
}
})();
val options = EdgeOptions()
val driver = EdgeDriver(options)
driver.quit()
Firefox
Selenium 4 requires Firefox 78 or greater. It is recommended to always use the latest version of geckodriver.
FirefoxOptions options = new FirefoxOptions();
driver = new FirefoxDriver(options);
driver.quit();
options = FirefoxOptions()
driver = webdriver.Firefox(options=options)
driver.quit()
var options = new FirefoxOptions();
var driver = new FirefoxDriver(options);
driver.Quit();
options = Selenium::WebDriver::Options.firefox
driver = Selenium::WebDriver.for :firefox, options: options
driver.quit
const {Builder} = require('selenium-webdriver');
const firefox = require('selenium-webdriver/firefox');
(async function openFirefoxTest() {
try {
let options = new firefox.Options();
let driver = await new Builder()
.setChromeOptions(options)
.forBrowser('firefox')
.build();
await driver.get('https://www.google.com');
await driver.quit();
} catch (error) {
console.log(error)
}
})();
val options = FirefoxOptions()
val driver = FirefoxDriver(options)
driver.quit()
Internet Explorer
The IE Driver is the only driver maintained by the Selenium Project directly. While binaries for both the 32-bit and 64-bit versions of Internet Explorer are available, there are some limitations with the 64-bit driver. As such it is recommended to use the 32-bit driver.
Legacy
The Selenium project aims to support the same releases that Microsoft considers current. Older releases may work, but will not be supported. Note that Internet Explorer 11 will end support for certain operating systems, including Windows 10 on June 15, 2022.
It should be noted that as Internet Explorer preferences are saved against the logged-in user’s account, some additional setup is required.
Additional information about using Internet Explorer can be found on the Selenium wiki
InternetExplorerOptions options = new InternetExplorerOptions();
driver = new InternetExplorerDriver(options);
driver.quit();
options = IEOptions()
driver = webdriver.Ie(options=options)
driver.quit()
var options = new InternetExplorerOptions();
var driver = new InternetExplorerDriver(options);
driver.Quit();
options = Selenium::WebDriver::Options.ie
driver = Selenium::WebDriver.for :ie, options: options
driver.quit
const { Builder } = require("selenium-webdriver");
const ie = require('selenium-webdriver/ie');
let options = new ie.Options();
let driver = await new Builder()
.forBrowser('internetExplorer')
.setIeOptions(options)
.build();
await driver.quit();
val options = InternetExplorerOptions()
val driver = InternetExplorerDriver(options)
driver.quit()
Compatibility Mode
Microsoft Edge can be used in IE compatibility mode using the IE Driver.
InternetExplorerOptions options = new InternetExplorerOptions();
options.attachToEdgeChrome();
options.withEdgeExecutablePath("/path/to/edge/browser");
driver = new InternetExplorerDriver(options);
driver.quit();
options = IEOptions()
options.attach_to_edge_chrome = True
options.edge_executable_path = "/path/to/edge/browser"
driver = webdriver.Ie(options=options)
driver.quit()
var options = new InternetExplorerOptions
{
AttachToEdgeChrome = true,
EdgeExecutablePath = "/path/to/edge/browser"
};
var driver = new InternetExplorerDriver(options);
driver.Quit();
options = Selenium::WebDriver::Options.ie
options.attach_to_edge_chrome = true
options.edge_executable_path = "/path/to/edge/browser"
driver = Selenium::WebDriver.for :ie, options: options
driver.quit
let options = new ie.Options();
options.setEdgeChromium(true);
options.setEdgePath("/path/to/edge/browser);
let driver = await new Builder()
.forBrowser('internet explorer')
.setIEOptions(options)
.build();
await driver.quit();
val options = InternetExplorerOptions()
options.attachToEdgeChrome()
options.withEdgeExecutablePath("/path/to/edge/browser")
val driver = InternetExplorerDriver(options)
driver.quit()
Opera
Since the opera driver does not support w3c syntax, but is based on Chromium, it is recommended to drive Opera browser with the chromedriver. Like all Chromium implementations, make sure that the browser version matches the driver version.
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/opera/browser");
driver = new ChromeDriver(options);
driver.quit();
options = ChromeOptions()
options.binary_location = "path/to/opera/browser"
driver = webdriver.Chrome(options=options)
driver.quit()
var options = new ChromeOptions
{
BinaryLocation = "/path/to/opera/browser"
};
var driver = new ChromeDriver(options);
driver.Quit();
options = Selenium::WebDriver::Options.chrome
options.binary = '/path/to/opera/browser'
driver = Selenium::WebDriver.for :chrome, options: options
driver.quit
const { Builder } = require("selenium-webdriver");
const chrome = require('selenium-webdriver/chrome');
let options = new chrome.Options();
options.setChromeBinaryPath("/path/to/opera/browser");
let driver = await new Builder()
.forBrowser('chrome')
.setChromeOptions(options)
.build();
await driver.quit();
val options = ChromeOptions()
options.setBinary("/path/to/opera/browser")
val driver = ChromeDriver(options)
driver.quit()
Safari
Desktop
Unlike Chromium and Firefox drivers, the safaridriver is installed with the Operating System. To enable automation on Safari, run the following command from the terminal:
safaridriver --enable
SafariOptions options = new SafariOptions();
driver = new SafariDriver(options);
driver.quit();
driver = webdriver.Safari()
driver.quit()
var options = new SafariOptions();
var driver = new SafariDriver(options);
driver.Quit();
options = Selenium::WebDriver::Options.safari
driver = Selenium::WebDriver.for :safari, options: options
driver.quit
const { Builder } = require("selenium-webdriver");
const safari = require('selenium-webdriver/safari');
let options = new safari.Options();
let driver = await new Builder()
.forBrowser('safari')
.setSafariOptions(options)
.build();
await driver.quit();
val options = SafariOptions()
val driver = SafariDriver(options)
driver.quit()
Mobile
Those looking to automate Safari on iOS should look to the Appium project.
Next Step
Create your first Selenium script