×

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.

  1. 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.
  2. setBrowserName()
    The class Desired Capabilities' setBrowserName() method can be used to change the browser's name.
  3. getVersion()
    This method from the class Desired Capabilities, getVersion(), can be used to determine the platform or browser version.
  4. 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.
  5. 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.

  1. Chrome Options
  2. Desired Capabilities
  3. 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.
  4. The arguments from the ChromeOptions class
  5. Disable-info bars: It is used to prevent notifications such as "Chrome is being controlled by automated software" from appearing in the Chrome browser.
  6. Make-default-browser: It is utilized to set Chrome as the default browser.
  7. Disable-popup-blocking: It is used to prevent Chrome browser pop-ups from appearing.
  8. Incognito: It starts the Chrome browser in incognito mode with the maximum
  9.  Settings: Headless: It maximizes the Chrome browser.It is used to use the headless mode of the Chrome browser.
  10. 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.
  11. 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.
  12. 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.
  13. The following options can influence how the Firefox browser starts or runs, can be found in firefoxOptions.
  14. 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.
  15. 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.

  1. 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.


Related Topics

Copy constructor

Let's start by learning what a constructor is before diving into the copy constructor in C++. What is a constructor? A constructor is a particular type of class member function that configures the objects of...

7 minutes read.

How to run program in turbo c++

What is Turbo C++? Turbo c++ is an integrated development environment (IDE) and a compiler to run C++ code. Turbo c++ helps to link the header files with the main code....

2 minutes read.

Counting Frequencies of Array Elements in C++

We have an array of integer items with duplicate values, and our objective is to compute the frequencies of the different elements in the array. Methods: Methods that can be used to...

3 minutes read.

Principles of Object-Oriented Programming in C++

What is Object-Oriented Programming? Object-oriented programming is about creating obejcts that represent the real-world entity . In object-oriented programming, objects are created for the class. One of the main objectives of...

5 minutes read.

Constructor Overloading

The program contains more than one constructor in a class with the same name, and different types of arguments are called constructor overloading. Calling of constructor depends on the number and types...

2 minutes read.

Add two numbers represented by two arrays in C++

The array stores a number in such a way that each digit of the number is represented by an array element. As an example, The array number 147 is 1,4,7. To add...

3 minutes read.

Initialize Vector in C++

Initialize Vector in C++  The following comparison operators are defined for vector and those are given below. ==, <, <=, !=, >,>=  This allows you to access the element of a vector using...

3 minutes read.

C++ Try-Catch

Every useful program will eventually encounter unexpected outcomes. By entering data that are incorrect, users might create mistakes. Sometimes the program's creator didn't consider all of the options or was...

7 minutes read.

Binary Search in C++

The binary search in the C++ programming language will be discussed. By continually halves the array and then seeking specified items from a half array; binary search is a technique...

8 minutes read.

Sizeof() Operators in C++

sizeof() Operators in C++ The sizeof() operator in C++ defines the size of variables, constants, or data types. It is a unique operator that manipulates other operators and returns the size...

4 minutes read.

C++ if-else

C++ if else Control Statement if else control statement in C++ is used to control the program flow in a two-way direction. When condition returns a true value, then the program executes if condition block otherwise...

1 minute read.

C++ For loop

C++ loop Statement C++ Loop statement allows us to repeat the execution of a statement or group of statements multiple times. The statement(s) repeat execution within loop until the condition of loop...

2 minutes read.

Divide by Zero Exception in C++

We use exception handling method to handle the divide by zero exception. Dividing a number with zero is generally mathematical error. We have to exception handling method to overcome this...

2 minutes read.

C++ Heap Sort

Heapsort is executed on the structure of the heap data. We know heap is a complete tree in binary form. The heap tree can be of two different types: Min-heap,...

3 minutes read.

How to Reverse a String in C++ using For Loop

For Loop: We may loop through a certain section of C++ code repeatedly using the for loop. A for loop is carried out if the test expression yields a true result. The...

4 minutes read.

Bitmasking in C++

Bitmasking is a technique that is used to access a particular bit within the data bytes. When you apply the iterative approach, this phenomenon is used. A bitmask is described...

6 minutes read.

Bits stdc++.h in C++

<bits/stdc++.h> in C++ In essence, it is a header file that contains all the standard libraries. It makes sense to use this file in programming competitions to speed up work, especially...

2 minutes read.

C++ array to function

Arrays in C++ : Instead of defining distinct variables for each item, arrays are used to hold numerous values in a single variable. An array can be declared by specifying the variable...

4 minutes read.

Lexicographically Next Permutation in C++

In this tutorial, we'll look at how to use C++ to generate the lexicographically next permutation of a string. The lexicographically next permutation is the larger permutation. "ACB," for example,...

3 minutes read.

C++ Comments

Comment/Remark A Comment or a Remark is text that is ignored by the compiler yet is beneficial to programmers. Code is usually annotated with comments for future reference. They are treated...

3 minutes read.