18

Próbuję zrobić niektóre przeglądanie stron przez Selenium. Moje pytanie jest bardzo proste: jak znaleźć link, a następnie jak go kliknąć? Na przykład: Poniżej znajduje się HTML, który próbuję internetowej złom:kliknięcie linku przez selen w pytonie

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

Więc, jak widać słowo „Szczegóły” jest link.

Jak mogę znaleźć ten link za pomocą Selenium i kliknąć na nim?

+1

Próbowałem sugerowane pomysł na td_element po Dostałem element td poprzez td_tag ​​= tr_tag.find_element_by_tag_name ("td"). Kiedy wołam find_element_by_link_text ("szczegóły") otrzymuję błąd selenium.common.exceptions.NoSuchElementException z komunikatem, który nie może zlokalizować elementu zlokalizować element {'' method '': '' tekst linku '', '' selektor '': '' details ''} ' – canbaran

Odpowiedz

32

Można użyć find_element_by_link_text:

Na przykład:

link = driver.find_element_by_link_text('Details') 

kliknąć na nim, po prostu zadzwoń kliknij metodę:

link.click() 
+0

dzięki, ale w jaki sposób mogę wywołać to na obiekcie td takim jak wyżej? Na przykład Mam elem_query_result = driver.find_element_by_id ('sorgudadasdsac'), a następnie mam tr_tag = elem_query_result.find_element_by_tag_name ("tr"), a następnie mam td_tag ​​= tr_tag.find_element_by_tag_name ("td") i chcę wywołać find_element_by_link_text ("Szczegóły") na td_tag, ale daje mi następujący błąd: nie można zlokalizować elementu {'' method '': '' tekst łącza '', '' selektor '': '' szczegóły ''} ' – canbaran

1

Następnie można spróbować czegoś takiego.

 

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

+0

nie mogę wywołać find_element_by_link na tag td? – canbaran

+0

Istnieje wiele linków z tekstem "szczegóły", pętlę nad tagami, a kiedy jestem w td, chcę wywołać find_element_by_link_text na tym tagu td. Czy to ma sens ? – canbaran

+0

Próbowałem i doceniam to, ale daje wszystkie linki. Jak już powiedziałem, zapętlałem się nad nimi, chciałbym móc otworzyć każdy z nich poprzez pętlę – canbaran

0

Można spróbować kliknij odnośnik za pomocą xpath lokalizatora przykład

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

link.click() 
0

Jednej rzeczy brakuje wszystkim. Jest to lista według poniższego zdania. Musisz wybrać element z tej listy.

driver.find_element_by_link_text ('Dane')

Jeśli zaznaczysz

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

BINGO :-)

Powiązane problemy