XPath - zasada szukania na bardziej skomplikowanych stronach

0

Cześć, mam problem ze zrozumieniem tego jak kliknąć na Allegro w przycisk Moje Allegro a potem z dropdown listy wybrać zaloguj, czy mógłby ktoś pomóc i przy okazji objaśnić zasadę szukania ? O ile na stronach z tutoriali XPath nie ma z tym problemu, strony są ubogie i łatwo znależć elementy, o tyle nie mogę dokopać się do tego np. właśnie na Allegro.

Moje marne próby kończyły się na znalezieniu 4 buttonów ale żeby konkretnie wybrać Moje Allegro nie wiedziałem jak, próbowałem contains ale niestety to nie działało.

1

Button 'Moje Allegro': //span[text() = 'Moje Allegro']/parent::button
Zaloguj też po tekście można złapać, nawet łatwiej //a[text() = 'zaloguj']

0

No okej poradziłem sobie już z innymi elementami dzięki Twojej pomocy, ale jeden jeszcze mnie zatrzymał i nie chce puścić (screen), pomoże ktoś? I jeszcze pytanko dlaczego w przypadku Chrome'a trzeba użyć $x("xpath") ??

title

0

Jeśli nie umiesz wybrać tego elementu to znaczy,że po prostu skopiowałeś rozwiązanie od kolegi,zamiast zrozumieć na czym ono polega.

0

Spodziewałem się takiej odpowiedzi która nic nie będzie wnosić :) akurat wiem już dzięki temu jak znajdować elementy po child, ancestorach etc i że jak składa się XPatha to nie musze w nim zawierać contain, dzięki temu znalazłem inne elementy i, niespodziewanie zrozumiałem jak szukać w takich przypadkach, ten button ma w górę same divy i nie wiem co tu zrobić, zamiast przeszukiwać filmiki na youtubie albo tutoriale które mi powiedzą żeby szukać po klasie czyli najgorszym możliwym elemencie wolę się zapytać

0

Co do szukania elementu to trochę racji w tym jest. Sposobów na znalezienie elementu XPathem jest setki i naprawdę można wymyślać rzeczy patologiczne, a działające, więc wystarczy odrobinę chęci. Jak już się upieramy to można znaleźć tego diva ze zgodą na przetwarzanie danych i później błądzić w jego dzieciach, tam buttony są tylko dwa.
Co do pytania o Chrome to nie zrozumiałem.

Ok masz: //*[@data-role = 'rodo-modal-body']//button[./i[@data-role = 'accept-consent']]

0

Przy szukaniu w konsoli w Chromie, string jest traktowany jako Xpath gdy wpiszesz go właśnie w taki sposób jak podałem wyżej $x("Xpath")

1

Ja szukam normalnie wpisując XPath pod Ctrl+F w zakładce 'Elements'.

0
Saalin napisał(a):

Ja szukam normalnie wpisując XPath pod Ctrl+F w zakładce 'Elements'.

Dobrze wiedzieć, jest to dużo wygodniejsze

1

A takie coś Ci pomoże?

function FindByAttributeValue(attribute, value, element_type)    {
  element_type = element_type || "*";
  var All = document.getElementsByTagName(element_type);
  for (var i = 0; i < All.length; i++)       {
    if (All[i].getAttribute(attribute) == value) { return All[i]; }
  }
}

 var p = FindByAttributeValue("data-role","accept-consent","button").click();
0

Jasne :) teraz poszukam tych samych elementów innymi sposobami, chodzi o to że dużo bardziej przemawia do mnie żywy przykład który sobie rozkminie niż gdakanie na youtube przez 30 minut które nic nie mówi, a jeśli ktoś zarzuca mi że nie rozumiem, to fakt, jakbym rozumiał to bym tutaj nie pisał :) a teraz dużo bliżej mi do zrozumienia, dzięki za pomoc, pozdro

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