Topic | Relative locators breaking the magic

Updated: Jan 31, 2020

Relative locators

There is a lot of talk about the announcement of the "new" feature relative locators or friendly locators for Selenium 4, a feature that is more mature and used in frameworks like taiko or helium

The possibilities are:

above: Web element appears above specified web element.

below: Web element appears below the specified web element.

near: Web element is at most 50 pixels away from the specified element.

toLeftOf: Web element appears to the left of the specified element.

toRightOf: Web element appears to the right of the specified element

All of these methods accept a By or a WebElement.

The actual use for selenium is really simple

The main idea is to find an element by the position of another, discarding multiple matches, and select the correct one, like choose the input that is near the button login.

How does it work ?

The JavaScript function getBoundingClientRect is responsible for finding the relative elements. This function returns properties of an element such as right, left, bottom, and top.

Advancement or just a feature

This feature is an advancement for developers so they can access nearby web elements with fewer lines. Also is an interesting idea for validate UI, validating element positions.

The disadvantages at the moment are that these locators do not work with overlapping elements or elements that have the position changed by css because Selenium decides the location of the element based on the HTML present in the source code, irrespective of CSS Values.

This behavior will give unexpected results in finding elements and make your tests to fail in some cases.


Related locators seem like a nice feature that needs more improvement for work like helium or taiko for being production-ready, anyway they add nothing new that you can not do with regular xpath.

33 views0 comments

Recent Posts

See All