Search code examples
javamavenseleniumfindby

How to use @FindBy annotation in Selenium for span text?


I want to know what can I do to get the "Apple" text in span element with @FindBy annotation.

Thats html code:

<span class="ui-cell-data">Apple</span>

and I tried something like that:

@FindBy(className = "ui-cell-data:Samsung")
WebElement customerName;

but it didn't work!


Solution

  • As per the HTML you have shared you may/maynot have been able to get the Apple text within the span element with :

    @FindBy(className = "ui-cell-data")
    WebElement customerName;
    

    Your code was nearly perfect but the trailing part in the className as :Samsung was unnecessary.

    But again, looking at the class attribute it is expected that a couple of more <span> tags will have the same class. So to uniquely identify the intended WebElement we need to refer to a parent node and follow its decendents to reach this particular node.

    Finally, with the given HTML the following code block will be much cleaner :

    • cssSelector:

      @FindBy(css = "span.ui-cell-data")
      WebElement customerName;
      
    • xpath:

      @FindBy(xpath = "//span[@class='ui-cell-data']")
      WebElement customerName;