18

Sto provando a fare qualche webscraping via Selenium. La mia domanda è molto semplice: come trovi un link e come fai a cliccare su di esso? Ad esempio: Il seguente è il codice HTML che sto cercando di web-raschiare:cliccando su un link via selenio in pitone

<td bgcolor="#E7EFF9"> 
    <a href="javascript:selectDodasaDetdasdasy(220011643,'Kdasdası');" target="_self"> 
    Details 
    </a> 
</td> 

Quindi, come si può vedere la parola "Dettagli" è un collegamento.

Come posso trovare quel collegamento utilizzando Selenium e fare clic su di esso?

+1

ho provato l'idea suggerita su un td_element dopo che ho avuto l'elemento td via td_tag ​​= tr_tag.find_element_by_tag_name ('td'). Quando chiamo find_element_by_link_text ('dettagli') ottengo l'errore selenium.common.exceptions.NoSuchElementException con il messaggio incapace di localizzare elemento locate element {'' metodo '': '' link text '', '' selector '': '' dettagli ''} ' – canbaran

risposta

32

È possibile utilizzare find_element_by_link_text:

Ad esempio:

link = driver.find_element_by_link_text('Details') 

a cliccare su di esso, basta chiamare cliccare metodo:

link.click() 
+0

quindi grazie, ma come posso chiamarlo su un oggetto td come sopra? Ad esempio, ho elem_query_result = driver.find_element_by_id ('sorgudadasdsac') quindi ho tr_tag = elem_query_result.find_element_by_tag_name ('tr') quindi ho td_tag ​​= tr_tag.find_element_by_tag_name ('td') e voglio chiamare find_element_by_link_text ('Dettagli') sul tag td_tag, ma mi dà il seguente errore: impossibile localizzare l'elemento {'' metodo '': '' link '', '' selettore '': '' dettagli ''} ' – canbaran

1

allora si può provare qualcosa di simile.

 

    for (int i=0; i&lttd.length(); i++){ 
     driver.find_element_by_xpath("(//a[contains(text(),'Details')])[i]").click() 
     } 

+0

non posso chiamare find_element_by_link su un tag td? – canbaran

+0

ci sono molti link con il testo '' dettagli '', sto facendo il giro dei tag e quando sono dentro un td, voglio chiamare find_element_by_link_text su quel tag td. Ha senso ? – canbaran

+0

Ho provato e lo apprezzo ma fornisce tutti i collegamenti. Come detto, li sto passando sopra, voglio essere in grado di aprirne uno attraverso il loop – canbaran

0

Si può cercare di fare clic sul collegamento utilizzando XPath localizzatore esempio

link=driver.find_element_by_xpath(.//*[@id="content"]/div[3]/div/div/div[2]/h4) 

link.click() 
0

Una cosa è sfuggita a tutti. È una lista dalla seguente dichiarazione. È necessario selezionare un elemento da questo elenco.

driver.find_element_by_link_text ('Dettagli')

Se si controlla

for i in driver.find_element_by_link_text('Details') 
    i.click() 

BINGO :-)

Problemi correlati