Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 810
Eduard Florinescu Avatar asked Sep 16 '12 09:09

Eduard Florinescu


2 Answers

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"))
like image 60
Scott Avatar answered Oct 08 '22 10:10

Scott


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");
like image 2
eugene.polschikov Avatar answered Oct 08 '22 11:10

eugene.polschikov