How can I get the href of elements found by partial link text?

Question:

Using Selenium and the Chrome Driver I do:

links = browser.find_elements_by_partial_link_text('##') matches about 160 links.

If I try,

for link in links:
    print link.text

with it I get the text of all the links:

##1
##2
...
##160

The links are like this:

<a href="1.html">##1</a>
<a href="2.html">##2</a>
...
<a href="160.html">##160</a>

How can I get the href attribute of all the links found?

Asked By: Eduard Florinescu

||

Answers:

An existing answer to a similar question seems like it might apply:

Assume

your HTML consists solely of that one 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.

So if the link contains “..blablabla…” text then you can find it in that way:

selenium.getAttribute("css=a:contains('..blablabla...')@href");
Answered By: eugene.polschikov

Call get_attribute on each of the links you have found:

links = browser.find_elements_by_partial_link_text('##')
for link in links:
    print(link.get_attribute("href"))
Answered By: Scott