Jak Mogę uzyskać href elementów znalezionych przez częściowy tekst linku?

Używając Selenium i Sterownika Chrome robię:

links = browser.find_elements_by_partial_link_text('##') pasuje do około 160 linków.

Jeśli spróbuję,

for link in links:
    print link.text

Wraz z nim dostaję tekst wszystkich linków:

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

Linki są takie:

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

Jak mogę uzyskać atrybut href wszystkich znalezionych linków?

Author: Eduard Florinescu, 2012-09-16

2 answers

Po prostu musisz wywołać get_attribute na każdym z znalezionych linków. Tak więc powinno działać:

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

To powinno teraz wypisać to, czego potrzebujesz.

 53
Author: Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-17 12:32:43

Istnieje odpowiedź na podobne pytanie wydaje się, że może mieć zastosowanie:

Załóżmy

Twój HTML składa się wyłącznie z tego jednego znacznika, to powinno to zrobić:

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

Używasz metody DefaultSelenium#getAttribute() i przekazujesz lokalizator CSS, symbol @ oraz nazwę atrybutu, który chcesz pobrać. W tym przypadku wybieramy a i otrzymujemy @href.

Więc jeśli link zawiera "..blablabla..."tekst wtedy można go znaleźć w tym sposób:

selenium.getAttribute("css=a:contains('..blablabla...')@href");
 0
Author: eugene.polschikov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:22