
Finding the right element on a webpage can be a challenge, but Selenium's find element by CSS selector makes it easier. You can use a CSS selector to locate an element based on its HTML structure.
A CSS selector is a string that identifies an element based on its HTML attributes, such as its tag name, class, or id. For example, if you have an HTML element with the class "header", you can use the CSS selector ".header" to find it.
The CSS selector ".header" is a class selector that targets any element with the class "header". This is useful when you need to find multiple elements with the same class on a webpage.
A fresh viewpoint: Create Css Selector from Webpage
What are Selectors?
CSS Selectors are a powerful way to identify and locate web elements on a web page. They are supported in all modern browsers and offer a faster and simpler method than XPath.
CSS Selectors can be used to locate web elements based on their id, class name, name, or other attributes like type, value, etc. By using CSS Selectors in Selenium, you can write precise test scripts and accurately identify and interact with the required web elements.
Intriguing read: Css Selector the Last 2 Child Elements
In Selenium WebDriver, CSS Selectors can be used to locate web elements using the By.cssSelector() method. This method accepts a CSS Selector string as its argument, which defines the selection criteria for the element(s) to be located.
There are five types of CSS Selectors in Selenium tests: ID, Class, Attribute, Sub-String, and Inner String.
Here are some examples of CSS Selectors:
CSS Selectors can be chained together to locate web elements using multiple criteria. For example, you can locate an element using the id attribute and the HTML TagName.
Types of Selectors
There are five types of CSS Selectors in Selenium tests: ID, Class, Attribute, Sub-String, and Inner String. These selectors help us identify and locate web elements on web pages.
ID selectors are used to locate elements based on their unique ID attribute. They are faster and more efficient than other selectors.
Class selectors are used to locate elements based on their class attribute. They are useful when you need to locate multiple elements with the same class.
If this caught your attention, see: Css Selector That Styles Child If Parent Has an Attribute
Attribute selectors are used to locate elements based on their attributes. They are useful when you need to locate elements with specific attributes.
Sub-String selectors are used to locate elements based on a part of their text content. They are useful when you need to locate elements with specific text.
Inner String selectors are used to locate elements based on a part of their text content. They are useful when you need to locate elements with specific text.
Here are the five types of CSS Selectors in Selenium tests:
Id and Class Selectors
Id and Class Selectors are two of the most common types of CSS Selectors used in Selenium. In CSS, we can use “#” notation to select the “id” attribute of an element, and “.” notation to select the “class” attribute of an element.
To locate an element by its id, we can use the following syntax: #id_value. For example, to locate the “Offers” tab on the BStackDemo application, we can use the CSS selector #offers.
You might like: Css Select Data Attribute in Pseudo Selector
The class selector is used to select elements with a specific class attribute. We can use the following syntax: .class_value. For example, to locate the “BrowserStackDemo” home logo, we can use the CSS selector .Navbar_logo__26S5Y.
We can also combine class and id selectors to make our locator more specific. For example, to locate the “Favourites” tab on BStackDemo application, we can use the CSS selector .Navbar_logo__26S5Y#offers.
Here are some examples of CSS selectors for id and class:
Using a combination of class and id selectors can help us narrow down the search results and speed up the search of the element. For example, to locate the “Offers” tab on the BStackDemo application, we can use the CSS selector .Navbar_logo__26S5Y#offers.
Attribute Selectors
Attribute selectors are a powerful way to locate elements on a web page using CSS selectors in Selenium. They allow you to target elements based on their attributes, making it easier to find specific elements.
A different take: Important Elements
You can use attribute selectors to locate elements by their tag name, such as "input" or "a". For example, if you want to locate the "Name" field on the Input Form page, you can use the CSS selector "input[name= "name"]".
Attribute selectors can also be used to locate elements by their attribute values. For instance, if you want to locate the "Favourites" tab, you can use the CSS selector "a[href="/favourites"]".
In some cases, using a single attribute may not yield a unique locator. To make it unique, you can combine multiple attributes. For example, to locate the "Offers" tab, you can use the CSS selector "#id[href="/offers"]".
Here are some common attributes you can use with attribute selectors:
- tag name
- id
- class
- name
- placeholder
- title
- type
- href
Combining attributes can also help you narrow down the search results. For example, to locate the first two radio buttons, you can use the CSS selector "input[name= "optradio"][type="radio"]".
Locating Elements
Locating Elements is a crucial step in web automation testing with Selenium WebDriver. You can identify web elements using various locator strategies, including the Name attribute.
The Name attribute is used to locate a web element. It's a good idea to use the Name attribute when the element has a unique name.
To locate a web element using the Name attribute, you can use the following code: driver.findElement(By.name(“name-value”));. This will return the first element with the given name.
You can also use the "Inspect Tools" menu in the browser to inspect the HTML source code of the web page and find the element's name. This will help you identify the correct locator strategy to use.
If the web element has a unique name, it's faster to use the Name attribute than other locator strategies like CSS Selectors or XPaths. However, if the element doesn't have a unique name, you may need to use a different locator strategy.
Here are the different types of locator strategies that can be used with Selenium WebDriver:
The Name attribute is a good place to start when trying to locate a web element.
Selenium Locators
Selenium locators are used to identify and locate web elements on web pages.
There are eight different types of locator strategies that can be used with Selenium WebDriver using Java.
A web element can be identified by inspecting the HTML source code of the web page using the “Inspect Tools” menu in the browser.
The following table will give you a fair summary of all the locators:
ID locators are unique and faster than any other selector for locating a web element on the page.
Selenium locators can be used to locate elements using various strategies, and the choice of strategy depends on the complexity of the web object.
Substring Matching
Substring matching is a powerful technique in CSS selectors. It allows you to locate web elements by matching partial strings.
To match a prefix, you can use the "starts with" method, which is denoted by the "$" character. For example, if you want to locate a web element with an id that starts with "title", you can use the CSS selector "input[id$="title"]".
You might enjoy: Id Selector Css
You can also match a suffix using the "$" character. This is useful when you know the end of the string, but not the beginning. For instance, to locate the Name field by matching a suffix, you can use the CSS selector "input[id$="tle"]".
Matching a substring is another way to use partial strings. The "*" character is used to match the string using a substring. This is useful when you know a part of the string, but not the whole thing. For example, to find all the web elements that have the role of "combobox", you can use the CSS selector "span[role*="combo"]".
Here are the four ways to match partial strings in CSS selectors:
- Matching a Prefix (Starts With)
- Match a Suffix (Ends With)
- Matching a Substring (Contains)
- Matching a word (Contains)
Tag Name Selectors
Tag Name Selectors are a great way to locate HTML elements using CSS Selectors in Selenium. They are used by combining the HTML TagName with the # symbol and the ID attribute.
The HTML TagName is used to specify the type of HTML element you want to locate, such as input or div. For example, in the Simple Form Demo page, the HTML TagName is "input".
To create a Tag Name Selector, you need to know the HTML TagName and the ID attribute of the element you want to locate. The ID attribute is used to uniquely identify an element within a webpage.
The Tag Name Selector is created by combining the HTML TagName and the ID attribute with the # symbol. For instance, the Tag Name Selector for the "Enter Message" field is "input#user-message".
A unique perspective: Selector Attribute Css
Id Locator
The ID Locator is a powerful tool in Selenium that allows you to locate web elements on a page using a unique identifier.
In CSS, an ID attribute is a unique identifier for locating a web element on the page, used with a "#" symbol followed by the ID. This is demonstrated on the Simple Form Demo page from LambdaTest's Selenium Playground website, where the "Get Checked Value" button is located using the "#showInput" CSS Selector.
To use an ID Locator, you need to know the ID of the element you want to locate. This can be found in the DOM of the page, such as the "Enter Message" field on the Simple Form Demo page, which has an ID of "user-message".
Curious to learn more? Check out: Css Selector Selenium
Here are the steps to use an ID Locator:
1. Find the ID of the element you want to locate
2. Use the ID in a CSS Selector with the "#" symbol, like this: "#id"
3. Use the findElement or findElements method in Selenium to locate the element
For example, to locate the "Enter Message" field, you would use the CSS Selector "#user-message".
Note that a combination of ID and HTML TagName can also be used as a CSS Selector to locate elements, like this: "tagName#id".
Class Name and Tag Name
To locate an element using a CSS selector, you can use the class name. In CSS, a class selector is created using the . dot character and then writing the class name.
The class name is used to select elements that have a specific class attribute. For example, on the BStackDemo application, the CSS selector with class for the "BrowserStackDemo" home logo is .Navbar_logo__26S5Y.
Expand your knowledge: Css Name Selector
You can also use the HTML tag name along with the class name to select an element. This is done by combining the HTML tag name followed by the . dot character and the class name.
For instance, on the Simple Form Demo page, the CSS selector for the "Enter Message" field is input#user-message, which combines the HTML tag name "input" with the class name "user-message".
It's worth noting that when using a class selector, Selenium WebDriver will locate the first element with the selector, not all elements.
Attribute Combinations
Attribute combinations are a powerful way to locate web elements using CSS selectors. By combining multiple attributes, you can create a unique locator that points to a specific element on the DOM.
Sometimes, using just a single attribute like class, id, or a specific attribute value doesn't yield a unique locator. In such cases, combining multiple attributes can help you fetch a unique locator.
For more insights, see: Css Selector That Targets a Specific Property Declaration
For example, if you want to locate the "Offers" tab by just the "href" attribute, it gives two results, which means it's not unique. To make it unique, you should also use the "id" attribute.
You can also combine different attribute types, like a tag name and an attribute value. For instance, using the tag name "input" and the name attribute "name" can help you locate the "Name" field on the Input Form page.
Here are some common attribute combinations used in CSS selectors:
Using a combination of type and name attributes can also be helpful. For example, if you want to locate the first two radio buttons, "Male" and "Female", you can use the CSS selector "input[name= "optradio"][type="radio"]".
Recommended read: Css Selector First of Type
Substring Matching
Substring Matching is a powerful technique for locating web elements using CSS Selectors in Selenium.
To match a prefix, you can use the "starts with" operator, which is denoted by the "$" character. For example, to locate the Name field by matching a suffix, you can use the CSS Selector "input[id$="tle"]".
Intriguing read: How to Use Inspect Element to Find Answers
You can also match a substring using the "*” character. This is useful when you want to locate web elements that contain a specific word or phrase. For instance, to find all web elements with the role of "combobox", you can use the CSS Selector "span[role*="combo"]".
There are four ways to match partial strings: Matching a Prefix, Match a Suffix, Matching a Substring, and Matching a word.
Child Selectors
Child Selectors are a powerful way to locate elements on a webpage using CSS Selectors. You can use them to select specific child elements, like the first or last child.
To select the first child, you can use the ":first-child" pseudo-class, like this: `TagName:first-child`. For example, if you want to select the first option in a dropdown list, you can use `#multi-select > option:first-child`.
Alternatively, you can use the `:first-of-type` pseudo-class, which is similar but more flexible. You can also use the `:nth-child(n)` pseudo-class to select every nth child, like the 3rd or 5th child.
Intriguing read: Css Selector Select Child of Parent
Here are some examples of child selectors:
You can also use the `:first-of-type` pseudo-class to select the first child of a specific type, like the first option in a dropdown list.
Additional reading: Input Type Selector Css
Selecting First Child
Selecting the first child can be achieved using the CSS Selector "HTML TagName :first-of-type" or "HTML TagName :first-child".
This strategy is particularly useful for selecting the first element directly from a list. For example, on the Select Dropdown List page, you can use the CSS Selector "#multi-select > option:first-of-type" to locate the first option, which in this case is California in the "Multi Select" dropdown box.
The locator strategy "HTML TagName" can be used along with either "first-of-type" or "first-child" to select the first child from the list. This can be seen in the example "#multi-select > option:first-of-type" and "#multi-select > option:first-child".
A unique perspective: Css List Selector
Nth Child N
The nth-child(n) locator strategy is a powerful tool for selecting specific elements from a list.
It matches every element that is the nth child of its parent, making it a great option for selecting a specific item.
For example, on the Select Dropdown List page, if we want to select the 3rd option, which is “New Jersey”, from the “Multi Select” dropdown, we can use the CSS Selector “#multi-select > option:nth-child(3)”.
In a list with 15 elements, we can use nth-child(n) to select the 3rd, 5th, or 10th element directly.
This locator strategy is particularly useful when we need to select a specific item from a long list.
It's worth noting that nth-child(n) is not limited to selecting the nth child element, but can also be used to select the nth child of a specific type, such as option:nth-child(3) to select the 3rd option.
Expand your knowledge: Css Nth of Class
Pseudo Selectors
Pseudo selectors are a powerful tool in finding elements using CSS selectors. They allow you to locate elements based on their content, structure, or relationships with other elements.
For example, to find elements that contain a specific text, you can use the `:contains(text)` pseudo selector. This is useful when you need to find elements that contain a certain word or phrase.
To find the first child element in a dropdown list, you can use the `:first-child` pseudo selector, as shown in the example `#multi-select > option:first-child`. This is a handy locator strategy when working with dropdown lists.
Here are some common pseudo selectors and their uses:
- :has(selector) - find elements that contain elements matching the selector
- :is(selector) - find elements that match any of the selectors in the selector list
- :not(selector) - find elements that do not match the selector
- :contains(text) - find elements that contain the given text
- :lt(n) - find elements whose sibling index is less than n
- :gt(n) - find elements whose sibling index is greater than n
- :eq(n) - find elements whose sibling index is equal to n
TagName with First-of-Type
TagName with "first-of-type" is a powerful CSS locator strategy that lets you select the first child element from a list. It's especially handy when working with dropdown lists.
To use it, you can combine the HTML TagName with the "first-of-type" option, like this: "option:first-of-type". This will locate the first option in the list.
For example, if you want to select the first option in a dropdown box, you can use the CSS Selector "#multi-select > option:first-of-type". The "#multi-select" part locates the dropdown box, and "option:first-of-type" locates the first option within it.
You can also use the "first-child" option with HTML TagName to select the first child element from the list, but "first-of-type" is often more specific and easier to use.
Broaden your view: Html Box Model
Pseudo Selectors
Pseudo selectors are a powerful tool in the world of CSS and Selenium. They allow you to select elements based on specific conditions, making your code more efficient and effective.
For example, the ":has" pseudo selector can be used to find elements that contain elements matching a specific selector. This is particularly useful when working with dropdown lists, as we saw in Example 2, where we used the CSS Selector "#multi-select > option:first-of-type" to select the first option in a dropdown list.
You can also use the ":is" pseudo selector to find elements that match any of the selectors in a list. This is useful when you need to select multiple elements with different tags, as shown in the example ":is(h1, h2, h3, h4, h5, h6)" which finds any heading element.
Here are some common pseudo selectors and their uses:
- :has(selector) - find elements that contain elements matching the selector
- :is(selector) - find elements that match any of the selectors in the selector list
- :not(selector) - find elements that do not match the selector
- :contains(text) - find elements that contain the given text
- :containsOwn(text) - find elements that directly contain the given text
- :matches(regex) - find elements whose text matches the specified regular expression
- :lt(n) - find elements whose sibling index is less than n
- :gt(n) - find elements whose sibling index is greater than n
- :eq(n) - find elements whose sibling index is equal to n
Note that the indexed pseudo-selectors are 0-based, meaning the first element is at index 0, the second at 1, and so on. This is useful to keep in mind when using pseudo selectors like ":lt", ":gt", and ":eq".
Problem and Solution
You want to find or manipulate elements using CSS selectors. This can be a bit tricky, but don't worry, we've got a solution.
You can experiment with different CSS selectors on Try jsoup. This will give you a chance to see how they work and find the one that suits your needs.
Parsing and traversing a Document is a key part of using CSS selectors. It allows you to navigate and find the elements you're looking for.
Problem
You want to find or manipulate elements on a web page, but you're not sure how to use CSS selectors to do it.
CSS selectors are powerful tools that allow you to target specific elements on a web page.
You can use CSS selectors to find elements based on their tag name, class, or ID.
For example, you can use a CSS selector to find all the paragraphs on a web page.
Solution
To solve the problem of parsing and traversing a Document, you can experiment with different CSS selectors on Try jsoup. This tool allows you to test and explore various selectors in a sandbox environment.

The Document object is the root node of the parsed document, and it contains a tree-like structure of nodes that you can traverse. You can use the Document object to access and manipulate the elements of the document.
Try jsoup is a great resource for experimenting with different CSS selectors and seeing how they interact with the Document object. You can use it to test and refine your selectors, making it easier to parse and traverse the document.
Frequently Asked Questions
How do I search for an element in CSS selector in Chrome?
To find a CSS selector in Chrome, navigate to the "Elements" page in Dev tools, select the element, and click the "CSS Selector" tab. From there, click the button to copy the complete and properly formatted selector.
Featured Images: pexels.com


