Sobes.tech
Junior

Jak zamierzasz znaleźć lokalizatory dla elementów na stronie internetowej?

sobes.tech AI

Odpowiedź od AI

Aby zlokalizować elementy, używam następujących podejść, zaczynając od najbardziej niezawodnych:

  1. Po ID: Unikalny identyfikator elementu. Najbardziej stabilna opcja, jeśli ID jest podane przez programistów.

    # Szukanie elementu po ID
    driver.find_element(By.ID, "element_id")
    
  2. Po klasie (nazwa klasy): Szukanie po wartości atrybutu class. Może być mniej unikalne niż ID.

    # Szukanie elementu po nazwie klasy
    driver.find_element(By.CLASS_NAME, "element_class")
    
  3. Po selektorze CSS: Potężne narzędzie pozwalające znaleźć elementy według różnych atrybutów, struktury DOM, pseudoklas itp. Elastyczność porównywalna z XPath, ale składnia jest często prostsza, a wykonanie szybsze.

    # Szukanie elementu po selektorze CSS
    driver.find_element(By.CSS_SELECTOR, "div.container > button[type='submit']")
    
  4. Po XPath: Język zapytań do znajdowania węzłów w dokumentach XML (w tym HTML). Pozwala znaleźć elementy na podstawie ich położenia w drzewie DOM, atrybutów, tekstów. Przydatne, gdy elementy nie mają unikalnych ID/klas lub do nawigacji po elementach nadrzędnych/podrzędnych. Może być mniej wydajne niż selektory CSS.

    # Szukanie elementu po XPath
    driver.find_element(By.XPATH, "//div[@class='form']//input[@name='password']")
    
  5. Po nazwie tagu (Tag Name): Szukanie wszystkich elementów z określoną nazwą tagu. Rzadko używane do lokalizacji konkretnego elementu, częściej do pobrania listy.

    # Szukanie wszystkich elementów div
    driver.find_elements(By.TAG_NAME, "div")
    
  6. Po tekście linku (Link Text/Partial Link Text): Specjalnie dla elementów <a> (linków).

    # Szukanie linku po dokładnym tekście
    driver.find_element(By.LINK_TEXT, "Kliknij tutaj")
    
    # Szukanie linku po częściowym tekście
    driver.find_element(By.PARTIAL_LINK_TEXT, "Kliknij")
    
  7. Po nazwie (Name): Szukanie po wartości atrybutu name. Często używane w polach formularzy.

    # Szukanie elementu po atrybucie name
    driver.find_element(By.NAME, "username")
    

Przy wyborze lokalizatora kieruję się następującymi zasadami:

  • Unikalność: Lokalizator musi jednoznacznie identyfikować potrzebny element.
  • Stabilność: Wybieram lokalizatory, które najmniej zmienią się przy zmianach w projekcie lub strukturze strony (preferuję ID i atrybuty, a nie pozycjonowane XPath).
  • Czytelność i łatwość utrzymania: Lokalizator musi być zrozumiały.

Podczas korzystania z selektorów CSS lub XPath staram się unikać zależności od głębokich lub absolutnych struktur DOM, preferując wyszukiwanie elementów względem najbliższego unikalnego rodzica lub po ich własnych atrybutach. Używam narzędzi inspekcji DOM w przeglądarce do debugowania i weryfikacji lokalizatorów.