javaseleniumselenium-webdriver

Find element by attribute


I am trying to find an element with Attribute. Well, I can find elements with Id, tagName, Xpath and all other predefined methods in Selenium. But, I am trying to write a method that specifically returns WebElement, given Attribute name and Value as input.

List<WebElement> elements = webDriver.findElements(By.tagName("Attribute Name"));
for(WebElement element : elements){
    if(element.getText().equals("Value of Particular Attribute")){
        return element;
    }
    else{
        return null;
    }
}

Assuming XPath is not an option, is there any other better ways to do this?


Solution

  • You can easily accomplish this task with CSS.

    The formula is:

    element[attribute='attribute-value']
    

    So if you have,

    <a href="mysite.com"></a>
    

    You can find it using:

    By.cssSelector("a[href='mysite.com']");
    

    this works using any attribute possible.

    This page here gives good information on how to formulate effective css selectors, and matching their attributes: http://ddavison.io/2014/02/18/effective-css-selectors