[Selenium] Szukanie elementu

Odpowiedz Nowy wątek
2020-03-20 12:23

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

0

Piszę program z selenium i próbuje znaleźć taki element na stronce

<button mat-icon-button="" color="primary" type="button" class="mat-focus-indicator mat-icon-button mat-button-base mat-primary" aria-describedby="cdk-describedby-message-5" cdk-describedby-host=""><span class="mat-button-wrapper"><lp-icon icon="success" class="font-small-icon icon-success"></lp-icon></span><div matripple="" class="mat-ripple mat-button-ripple mat-button-ripple-round"></div><div class="mat-button-focus-overlay"></div></button>

szukać po xpath i css selector nie moge bo za każdym razem ten przycisk ma inny xpath i css selector ale ma zawsze taką samą klasę, dlatego napisałem

driver.find_element_by_class_name("mat-focus-indicator mat-icon-button mat-button-base mat-primary").click()

ale wtedy otrzymuje błąd

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".mat-focus-indicator mat-icon-button mat-button-base mat-primary"}
  (Session info: chrome=78.0.3904.108)

Pozostało 580 znaków

2020-03-20 17:46

Rejestracja: 1 rok temu

Ostatnio: 2 godziny temu

0

Doczytaj tutaj o waitach. https://selenium-python.readthedocs.io/waits.html
Możliwe, że szukasz elementu generowanego przez js zanim jeszcze się pojawi w DOMie.

Pozostało 580 znaków

2020-03-20 22:30

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

0
Ikszad napisał(a):

Doczytaj tutaj o waitach. https://selenium-python.readthedocs.io/waits.html
Możliwe, że szukasz elementu generowanego przez js zanim jeszcze się pojawi w DOMie.

Program wyszukuje w tym samym momencie ale po xpath tylko że xpath czasami się zmienia i wtedy wywala program, dlatego nie mogę szukać po xpath. A więc element musiał być już wczytany no bo w tym samym czasie wyszukuje po xpath i znajduje a po klasie nie znajduje. Chciałem jeszcze dodać że jak się naciśnie ten przycisk to on zmienia klase na mat-focus-indicator mat-icon-button mat-button-base mat-primary cdk-focused cdk-mouse-focused może to coś zmieni. Mam nadzieje że udało ci się coś z tego zrozumieć :)

edytowany 1x, ostatnio: krysteq28, 2020-03-20 22:30

Pozostało 580 znaków

2020-03-20 22:39

Rejestracja: 1 rok temu

Ostatnio: 2 godziny temu

0
driver.find_element_by_xpath("//button[@class='mat-focus-indicator mat-icon-button mat-button-base mat-primary']")

Spróbuj czegoś w tym stylu. Coś mi się kojarzy, że szukanie po find_element_by_class_name nie zadziała jak jest kilka klas.

Pozostało 580 znaków

2020-03-21 15:16

Rejestracja: 3 miesiące temu

Ostatnio: 5 minut temu

0

A nie ma innego buttona z takimi klasami na stronie? Element musi być unikatowy. Zobacz, czy jak wyszukasz to w zawartości strony to będziesz mieć jedno wystąpienie.

Pozostało 580 znaków

2020-03-23 21:43

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

0
Ikszad napisał(a):
driver.find_element_by_xpath("//button[@class='mat-focus-indicator mat-icon-button mat-button-base mat-primary']")

Spróbuj czegoś w tym stylu. Coś mi się kojarzy, że szukanie po find_element_by_class_name nie zadziała jak jest kilka klas.

Teraz program zachowuje się tak jakby poprostu omijał tą linijkę.

Pozostało 580 znaków

2020-03-23 21:44

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

0
null null napisał(a):

A nie ma innego buttona z takimi klasami na stronie? Element musi być unikatowy. Zobacz, czy jak wyszukasz to w zawartości strony to będziesz mieć jedno wystąpienie.

Jest kilka przycisków z tą klasą ale obojętne mi to w który on kliknie.

Pozostało 580 znaków

2020-03-23 21:44

Rejestracja: 1 rok temu

Ostatnio: 2 godziny temu

0

A dodałeś na końcu .click()?

Pozostało 580 znaków

2020-03-23 21:48

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

0
Ikszad napisał(a):

A dodałeś na końcu .click()?

O boże... racja. Ja poprostu skopiowałem i wkleiłem. Dopisuję i sprawdzam czy działa.

Pozostało 580 znaków

2020-03-23 22:37

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

0

Dzięki wam, już wszystko działa.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0