Desired Capabilities in Selenium Web Driver in C++
- A class called Desired Capabilities is used to specify a set of fundamental requirements, such as browser, operating system, and version combinations.to carry out automated testing of a web application across multiple browsers.
- When using Selenium automation testing to try to automate our test scripts, we need to consider these combinations when declaring a specific test environment in which our website or web application should render flawlessly.
- Screen resolutions, mobile devices, desktop computers, and mobile browsers are all examples of these environments.
- We use the Desired Capabilities in Selenium testing or Appium testing to declare these environments in our Selenium automation testing script, and this is exactly what we will discuss in this article.
- I will assist you in familiarizing yourself with the Appium and Selenium Desired Capabilities.
- With examples, I will explain what they are and how they are utilized in Appium and Selenium automation testing.
What kinds of Skills are D esired?
- The org.open a.selenium.remote contains a component called Desired Capabilities.Package of DesiredCapabilities.
- It assists Selenium WebDriver in setting the browser properties. Thus, we can set browser properties by utilizing various capabilities from the Desired Capabilities class.
- Examples include the browser's name, version, and so forth.When we set these capabilities for browsers; we use key-value pairs.
- For all of the specific methods, etc., you can look to the GitHub library for the Desired Capabilities.
- When using Selenium automation testing, we always have different requirements for execution, such as which browser to use, which operating system to use, and which version to use for the test.
- This is where Desired Capabilities on Selenium Grid come in handy.
- We can use the set Capability method from the DesiredCapabilities class to set the various types of browser capabilities to declare Desired Capabilities in Selenium automation testing with Grid.IE, Firefox, Edge, and Chrome) platform name(Mac OS, Windows, etc.)
- Setup Selenium Grid for Parallel Execution in Multiple Browsers In the case of mobile application automation, where we need to execute test automation on a variety of browser and device properties, the Desired Capabilities class comes in handy.
- To use automation testing for various mobile platforms, including iOS and Android, among others.In addition, there may be various platforms (operating system) versions, such as Android 9.x, and 10.x, and iOS 12.x, 13.x, etc.; these properties can be set using Desired Capabilities in Appium for Android or iOS by our requirements.
- Selenium Advanced-certification this certification is great for professionals in testing who want to learn advanced, practical Selenium automation testing techniques.
A brief overview of the LambdaTest Selenium Advanced certification can be found here:
- YouTube Thumbnail in Selenium and Appium, the Desired Capabilities class provides instructions to the WebDriver regarding the environment, such as the browser name, browser version, platform, and so on.
- Over which we use our automation scripts to carry out automated browser testing.
- However, the Desired Capabilities class can be used for more than just that. Additionally, we can set preferences for each browser, such as enabling options in Chrome and Firefox, testing incognito, disabling javascript, and so on.
- Selenium Automation Testing with Disabled JavaScript Settings If you use a cloud-based online Selenium grid, the Desired Capabilities class can also be used to test locally hosted web applications with Selenium, generate command-by-command screenshots, or even record a video of the entire test automation execution across a variety of browser and operating system configurations.
Types of Desired Capabilities Methods
Now, let's talk about the various methods in the Desired Capabilities class for setting test automation properties.
- getCapability()
This method setCapability() from the class Desired Capabilities can be used to set the name of the device, the name of the platform, the version of the platform, the absolute path of the application under test, application activity (in Mobile automation), application Package (in Java), and so on. Get browser name():
This method from the class Desired Capabilities, get browser name(), can be used to obtain the Browser's name. - setBrowserName()
The class Desired Capabilities' setBrowserName() method can be used to change the browser's name. - getVersion()
This method from the class Desired Capabilities, getVersion(), can be used to determine the platform or browser version. - Set version()
The class Desired Capabilities' set version() method can be used to change the browser or platform version.
getplatform()
The getPlatform() method from the class Desired Capabilities can be used to obtain platform-specific information. - setPlatform()
Thismethod from the class Desired Capabilities can be used to modify the platform's specifics.
Desired Capabilities in Selenium WebDriver for Browsers
- Toto uses the Desired Capabilities in Selenium WebDriver for Chrome, the ChromeDriver session needs to be started.
- So, let's talk about the capabilities that ChromeDriver supports and how we can use them to set the capabilities we want in Selenium Webdriver for Chrome.
There are two ways to set ChromeDriver's capabilities.
- Chrome Options
- Desired Capabilities
- ChromeOptions is a different class which can be used in conjunction with Desired Capabilities to modify or customize the various properties of the Chrome browser.
- The arguments from the ChromeOptions class
- Disable-info bars: It is used to prevent notifications such as "Chrome is being controlled by automated software" from appearing in the Chrome browser.
- Make-default-browser: It is utilized to set Chrome as the default browser.
- Disable-popup-blocking: It is used to prevent Chrome browser pop-ups from appearing.
- Incognito: It starts the Chrome browser in incognito mode with the maximum
- Settings: Headless: It maximizes the Chrome browser.It is used to use the headless mode of the Chrome browser.
- Let's now look at an ad blocker that makes use of Chrome Option and the Desired Capabilities class.For this, we will make use of an extension for an ad blocker.
- View rawcrx.java on GitHub Testing with Selenium there is ways to customize the Desired Capabilities in Selenium WebDriver for Firefox browsers, just like there are ways to customize the capabilities in the Chrome browser.
- Mozoz: The firefoxOptions feature is only available in the Firefox browser.Moz can help us: firefoxOptions enables us to control the behaviour of the Firefox browser by customizing or modifying various properties. It is typically invoked as a member in either of the two, the first coming from entries for always match and the second from entries for firstMatch.
- The following options can influence how the Firefox browser starts or runs, can be found in firefoxOptions.
- The binary (String): The custom Firefox binary can use the absolute path that we provide.When Firefox's driver, GeckoDriver, is not specified, it will typically attempt to locate Firefox on the current system.
- args (a string array): The Firefox binary receives the command line arguments through this argument.When using this syntax, it should include hyphens and dashes like "-profile."
Therefore, we should use syntax like ["-profile", "path to the profile"] to get GeckoDriver to use an existing profile.
- Profile(string): We can supply the directory's path so that the Firefox instance can be used.This can be used to install custom certificates or Firefox extensions.When we want to set custom preferences, it is recommended to use prefs rather than passing the profile directly. The prefs example and others are provided below.
In Selenium WebDriver for Firefox, an illustration of declaring Desired Capabilities can be found here.
{
"function":{
"alwaysMatch":{
"moz:firefoxOptions":{
"binary":"/usr/local/firefox/bin/firefox",
"args":["-headless","-profile","/path/to/my/profile"],
"Environmentalsetting":{
"dom.ipc.processCount":9,
"javascript.options.showInConsole":True
},
"Log":{"Level":"Trace"}
}
}
}
}
if(driverParameter==null||driverParameter.equalsIgnoreCase(FIREFOX))
{
DesiredCapabilitiescapabilities=DesiredCapabilities.firefox();
FirefoxOptionsoptions=newFirefoxOptions();
options.setHeadless(headless);
Capabilities.merge(optional);
}
- View rawseleniumwebdriver.java, which is hosted on GitHub. Desired Capabilities in Selenium WebDriver for IE (Internet Explorer) Let's move on to the Desired Capabilities in Selenium WebDriver for IE (Internet Explorer).We use Selenium WebDriver's InternetExplorerOptions and Desired Capabilities for IE.
- In the Selenium WebDriver for IE, this is an illustration of declaring Desired Capabilities.
if(driver parameter == null || driver parameter.equalsIgnoreCase(IE)):
{
capabilities = capabilities.internetExplorer();
abilities.setCapability(true, "requireWindowFocus")
capabilities.setCapability(CapabilityType.True, accept_ssl_certs);
}
- View rawseleniumwebdriverforIE.java, which is hosted on GitHub. There are a few Internet Explorer-specific features that we can make use of; let's go over a few of them one at a time.
- booleanignoreZoomSetting: By utilizing this feature, you can defer checking the browser's zoom level to 100%.It is set to false by default.As an input, a Boolean value is required.
- initialBrowserUrl: We can use this capability to select the initial URL, or website, to which the Internet Explorer browser should redirect when it starts.As input, a string is required.
- booleanenableElementCacheCleanup: This capability checks the element cache for out-of-date elements. The capability tells the WebDriver to clean up if they are discovered.As an input, a Boolean value is required.
- booleanrequireWindowFocus: This capability tells the driver to make sure the Internet Explorer window has the focus before doing anything else, like using the mouse or keyboard, etc. It uses a Boolean value as its input and is set to false by default.
- booleanignoreProtectedModeSettings: You can take advantage of this feature when performing Selenium automation testing to bypass the protected mode check. As an input, a Boolean value is required.
Therefore, we can make use of some of these Internet Explorer-specific capabilities.