Skip to content

[πŸš€ Feature]: Get element locator from WebElementΒ #15406

@skyhirider

Description

@skyhirider

Feature and motivation

This request has been opened once and closed with the redirect to open change for w3c webdriver specification, but was redirected back here from w3c - w3c/webdriver#1829

Each WebElement must have a By locator that uniquely locates it.
As far as I can tell, the locator is protected and not available.
There are cases when pulling it out and re-using it would be helpful.
I propose exposing a getter for the By locator.

Usage example

You initialize a web element and it eventually becomes stale.
To refresh it, you either need to

remember the locator and re-load it by calling the locator. Not always possible if you pass the element around
use the @ findby annotation so it auto refresh when stale. Can't use that if locators need to have variables.
If I need to check if an element exists

I used @ findby, can't do that as it will patiently wait until it times out. Need to do a driver.findElementsBy(locator..).size()>0 , but can't as I can't reach the By to do this. So I copy paste my locator, once in annotation and once as a By in my fields, effectively duplicating code
if I do the same thing with a webelemennt I previous located, I can at least catch a stale exception and handle that, but would be nicer if I could get the by and fire up findelements to check if it still exists.
What if, instead, we could get the locator from each element. Would help with duplicating locators, as well as constructing new webelements or running the locators against the page again.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-needs-triagingA Selenium member will evaluate this soon!I-enhancementSomething could be better

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions