¿Cómo puedo obtener el href de elementos encontrados por texto de enlace parcial?


Usando Selenium y el controlador de Chrome lo hago:

links = browser.find_elements_by_partial_link_text('##') coincide con unos 160 enlaces.

Si lo intento,

for link in links:
    print link.text

Con él obtengo el texto de todos los enlaces:

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

Los enlaces son así:

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

¿Cómo puedo obtener el atributo href de todos los enlaces encontrados?

Author: Eduard Florinescu, 2012-09-16

2 answers

Simplemente necesita llamar a get_attribute en cada uno de los enlaces que ha encontrado. Así que lo siguiente debería funcionar:

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

Esto ahora debería generar lo que necesita.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-17 12:32:43

Una respuesta existente a una pregunta similar parece que podría aplicarse:

Asumir

Su HTML consiste únicamente en esa etiqueta, entonces esto debería hacerlo:

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

Utiliza el método DefaultSelenium#getAttribute() y pasa un localizador CSS, un símbolo @ y el nombre del atributo que desea obtener. En este caso, seleccione el a y obtenga su @href.

Así que si el enlace contiene "..blablabla..."texto entonces se puede encontrar en que camino:

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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:22