Object Identification in Selenium Using XPath
Object identification in Selenium test automation is important. Here, we cover why — and how to do it.
Why Object Identification in Selenium Is Important
Object identification in Selenium is important.
It helps you handle a dynamic list of object id changes, based on the number of rows. It also provides better validation options for the list of objects in one screen. It helps you find elements where the relative XPath is different across devices. And, finally, it helps you get dynamic data from the screen.
Now that you know why object identification is important, let's cover how to do it.
How to Identify Objects in Selenium
Here's how to identify objects in Selenium. Your first step is to get an object list. In Selenium, you can get list of objects with specific property. Then you can manipulate it in the code.
Let's use the following as our working example:
I would like to get the cars category list and number of car in each category.
1. Find the Common Property
In this example, all the items has the same class property : ui-link-inherit.
2. Use findElements Command
In the code, use findElements command with XPath “contains” option with the specific property.
List<WebElement> objList = webDriver.findElements(By.xpath("(//div[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][@id=\"Content-\"])/ul/li/following::*[contains(@class,\"ui-link-inherit\")]"));
3. Loop Over the WebElement List
Loop over the WebElement list to work with the objects.
4. Set an Anchor to the List
In this example I need to set an anchor to the list as part of my XPath because the page contains other object with the same class property which I want to exclude.
Part 1: The first part is setting the anchor for the elements I looking for:
Part 2: the second part is getting all the objects with the calss ui-link-inherit
There's a code example in GitHub.
Throughout this blog, I've used XPath as an example. There are options for Selenium locators, too, besides XPath. Here's a quick list of locators that can help you identify elements.:
- Link Text
- Partial Link Text
- CSS Selector
Get More Out of Selenium
Selenium is a great open source framework for automated web testing. But it can't do it all.
Perfecto pairs with Selenium to to make it even better. For example:
- Perfecto makes test authoring easier with codeless and BDD options.
- Perfecto can scale large amounts of test suites.
- Perfecto accelerates your processes with bursting and parallel testing.
See for yourself why teams everywhere pair Selenium with Perfecto. Try it for free today.