how to get attribute value using selenium and css

Sunny picture Sunny · Aug 26, 2011 · Viewed 40.4k times · Source

I have the following HTML code:

<a href="/search/?p=2&q=move&mt=1"> 2 </a>

I would like to get what is contained in href, ie, I was looking for a command which would give me "/search/?p=2&q=move&mt=1" value for href.

Could someone please help me with the respective command and css locator in selenium, for the above query?

if I have something like:

<a href="/search/?p=2&q=move&mt=1"> 2 </a> 
<a href="/search/?p=2&q=move&mt=2"> 3 </a> 

Out of these two if I was to get the attribute value for href whose text conatins '2', then how would my css locator synatx look like?

Answer

BoltClock picture BoltClock · Aug 26, 2011

If your HTML consists solely of that one <a> tag, then this should do it:

String href = selenium.getAttribute("css=a@href");

You use the DefaultSelenium#getAttribute() method and pass in a CSS locator, an @ symbol, and the name of the attribute you want to fetch. In this case, you select the a and get its @href.

In response to your comment/edit:

  1. The part after @ tells Selenium that that part is the name of the attribute.

  2. You should place :contains('2') before @href because it's part of the locator, not the attribute. So, like this:

    selenium.getAttribute("css=a:contains('2')@href");