Dzień dobry, mam problem ze zrozumieniem jak znaleźć element po Xpath..
Tworzę pewien automacik, który uzupełnia dane na stronie i je zapisuje nim przejdzie do kolejnej zakladki.
Pierwszą fajnie powypełniał danymi, poklikał i ok, ale w następnej zakładce jest tylko jedna informacja do wprowadzenia, którą wprowadza jeszcze bez problemu, ale nie mogę później trafić w przycisk zapisz - ponieważ są 3 takie same przyciski na stronie.
Nie ma tam ramek a nazwy i klasy są takie same. Wydaje mi się, że powinienem go namierzyć poprzez xpath - tylko jakoś nie ogarniam jak to działa. Mógłby mi ktoś 'namalować' jak debilowi kwestię tego jednego przycisku?
XPath możesz pobrać przez devtools.
Klikasz prawym na element który cię interesuje i Copy > Cope XPath.
Jak znajdziesz xpath danego elementu to Selenium pozwala odszukać taki element na stronie i wykonać na nim akcję:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://example.com")
button = driver.find_element_by_xpath('//div[@class="zapisz"]/button')
button.click()
Tylko Xpath mam typu:
/html/body/div[1]/div[2]/div[6]/div/div/form/div[3]/div[1]/div[10]/button[2]
..
@JakubD:
XPath z generatora często wygląda tak jak Twój, możesz go użyć :) Co do błędu z komentarza to Seleniu otwiera czystą przeglądarkę - więc może jest tam popup z cookies czy inna zgodą która zasłania element w którch chcesz kliknąć. Możesz albo scrollować ekran albo zobaczyć co tam się wyświetla i to zamknąć żeby odsłonić button.
No jak to klinkąć..:(?
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.