vendredi 23 août 2019

Fetch Pagefactory WebElement name using reflection

src/test/resources/com/simulator/files/NewDownList.txt I am using selenium pagefactory, and have introduced an annotation @Name(Description = "Username"), which I use for all WebElements. I need to find the value for Description in my custom methods later on, for reporting, like:

public static void click(WebElement element) throws Throwable {
        try {
            element.click();
        } catch(ElementNotInteractableException E1) {
            throw new UnableToInteractWithElementException("Unable To Interact With " + WebElement Descriptionn);
        }
    }

My @Name annotation interface and pagefactory look like this:

Name Interface

@Target({ElementType.FIELD, ElementType.TYPE,ElementType.CONSTRUCTOR})
public @interface Name {    
    String Description() default "";
}

@Name(Description = "Username")
@FindBy(id="txtLoginID")
public WebElement username;

The problem I face while using reflections is the need to define classname of pagefactory , and also provide fieldname as string "username" , to retrieve the annotation value.

I wish to be able to retrieve the annotation value by only providing my WebElement and no other object to my click(WebElement element) method.





Aucun commentaire:

Enregistrer un commentaire