How to Use CSS Selector for Identifying Web Elements for Selenium Scripts – Selenium Tutorial #6

In our previous Selenium tutorial, we learned different types of locators. We also learned how to use: ID, ClassName, Name, Link Text, and XPath locators for identifying web elements in a web page.

In continuation with that, today we will learn how to use CSS Selector as a Locator. This is our 6th tutorial in our free Selenium Training series.

Using CSS Selector as a Locator:

CSS Selector is the combination of an element selector and a selector value which identifies the web element within a web page. The composite of element selector and selector value is known as Selector Pattern.

Selector Pattern is constructed using HTML tags, attributes and their values. The central theme behind the procedure to create CSS Selector and Xpath are very much similar underlying the only difference in their construction protocol.

Like Xpath, CSS selector can also locate web elements having no ID, class or Name.

So now gearing ahead, let us discuss the primitive types of CSS Selectors:

What You Will Learn:

CSS Selector: ID

In this sample, we would access “Email” text box present in the login form at Gmail.com.

The Email textbox has an ID attribute whose value is defined as “Email”. Thus ID attribute and its value can be used to create CSS Selector to access the email textbox.

Creating CSS Selector for web element

Step 1: Locate/inspect the web element (“Email” textbox in our case) and notice that the HTML tag is “input” and value of ID attribute is “Email” and both of them collectively make a reference to the “Email Textbox”. Hence the above data would be used to create CSS Selector.

Verify the locator value

Step 1: Type “css=input#Email” i.e. the locator value in the target box in the Selenium IDE and click on the Find button. Notice that the Email Text box would be highlighted.

Syntax

css=<HTML tag><#><Value of ID attribute>

Note: Also applicable for other types of CSS Selectors

CSS Selector: Class

In this sample, we would access “Stay signed in” check box present below the login form at gmail.com.

The “Stay signed in” check box has a Class attribute whose value is defined as “remember”. Thus Class attribute and its value can be used to create CSS Selector to access the designated web element.

Locating an element using Class as a CSS Selector is very much similar to using ID, the lone difference lies in their syntax formation.

Creating CSS Selector for web element

Step 1: Locate/inspect the web element (“Stay signed in” check box in our case) and notice that the HTML tag is “label” and value of ID attribute is “remember” and both of them collectively make a reference to the “Stay signed in check box”.

Verify the locator value

Step 1: Type “css=label.remember” i.e. the locator value in the target box in the Selenium IDE and click on the Find Button. Notice that the “Stay signed in” check box would be highlighted.

Syntax

css=<HTML tag><.><Value of Class attribute>

CSS Selector: Attribute

In this sample, we would access “Sign in” button present below the login form at gmail.com.

The “Sign in” button has a type attribute whose value is defined as “submit”. Thus type attribute and its value can be used to create CSS Selector to access the designated web element.

Creating CSS Selector for web element



Step 1: Locate/inspect the web element (“Sign in” button in our case) and notice that the HTML tag is “input”, the attribute is type and value of type attribute are “submit” and all of them together make a reference to the “Sign in” button.

Verify the locator value

Step 1: Type “css=input[type=’submit’]” i.e. the locator value in the target box in the Selenium IDE and click on the Find Button. Notice that the “Sign in” button would be highlighted.

Syntax

css=<HTML tag><[attribute=Value of attribute]>

CSS Selector: ID/Class and attribute

In this sample, we would access “Password” text box present in the login form at gmail.com.

The “Password” text box has an ID attribute whose value is defined as “Passwd”, type attribute whose value is defined as “password”. Thus ID attribute, type attribute and their values can be used to create CSS Selector to access the designated web element.

Creating CSS Selector for web element

Step 1: Locate/inspect the web element (“Password” text box in our case) and notice that the HTML tag is “input”, attributes are ID and type and their corresponding values are ”Passwd” and “password” and all of them together make a reference to the “Password” textbox.

Verify the locator value

Step 1: Type “css=input#Passwd[name=’Passwd’]” i.e. the locator value in the target box in the Selenium IDE and click on the Find Button. Notice that the “Password” text box would be highlighted.

Syntax

css=<HTML tag><. Or #><value of Class or ID attribute><[attribute=Value of attribute]>

Two or more attributes can also be furnished in the syntax. For example, “css=input#Passwd[type=’password’][name=’Passwd’]”.

CSS Selector: Sub-string

CSS in Selenium allows matching a partial string and thus deriving a very interesting feature to create CSS Selectors using substrings. There are three ways in which CSS Selectors can be created based on the mechanism used to match the substring.

Types of mechanisms

All the underneath mechanisms have symbolic significance.

Let us discuss them in detail.

Match a prefix

It is used to correspond to the string with the help of a matching prefix.

Syntax

css=<HTML tag><[attribute^=prefix of the string]>                

For Example: Let us consider “Password textbox”, so the corresponding CSS Selector would be:

css=input#Passwd[name^=’Pass’]

Match a suffix

It is used to correspond to the string with the help of a matching suffix.

Syntax

css=<HTML tag><[attribute$=suffix of the string]>                

For Example Lets again consider “Password textbox”, so the corresponding CSS Selector would be:

css=input#Passwd[name$=’wd’]

Match a sub string

It is used to correspond to the string with the help of a matching sub string.

Syntax

css=<HTML tag><[attribute*=sub string]>                

For Example Lets again consider “Password textbox”, so the corresponding CSS Selector would be:

css=input#Passwd[name$=’wd’]

CSS Selector: Inner text

The inner text helps us identify and create CSS Selector using a string pattern that the HTML Tag manifests on the web page.

Consider, “Need help?” hyperlink present below the login form at gmail.com.

The anchor tag representing the hyperlink has a text enclosed within. Thus this text can be used to create CSS Selector to access the designated web element.

Syntax

css=<HTML tag><:><contains><(text)>

This is one of the most frequently used strategies to locate web element because of its simplified syntax.

Owing to the fact that creating CSS Selector and Xpath requires a lot of efforts and practice, thus the process is only exercised by more sophisticated and trained users.

Next Tutorial #7: Proceeding ahead with our next tutorial, we would take the opportunity to introduce you with an extension of locating strategies. Thus, in the next tutorial, we would study the mechanism to locate web elements on Google Chrome and Internet Explorer.

We are covering Selenium Locators in more details as it is an important part of Selenium Script creation.

Let us know your queries/comments below.