Sobes.tech
Junior

Ako budete nachádzať lokalizátory pre prvky na webovej stránke?

sobes.tech AI

Odpoveď od AI

Pre lokalizácie prvkov používam nasledujúce prístupy, začínajúc najspoľahlivejšími:

  1. Podľa ID: Unikátny identifikátor prvku. Najstabilnejšia možnosť, ak je ID zadané vývojármi.

    # Vyhľadanie prvku podľa ID
    driver.find_element(By.ID, "element_id")
    
  2. Podľa triedy (názov triedy): Vyhľadávanie podľa hodnoty atribútu class. Môže byť menej unikátne ako ID.

    # Vyhľadanie prvku podľa názvu triedy
    driver.find_element(By.CLASS_NAME, "element_class")
    
  3. Podľa CSS selektora: Výkonný nástroj umožňujúci nájsť prvky podľa rôznych atribútov, štruktúry DOM, pseudo- tried a pod. Flexibilita porovnateľná s XPath, ale syntax je často jednoduchšia a vykonávanie rýchlejšie.

    # Vyhľadanie prvku podľa CSS selektora
    driver.find_element(By.CSS_SELECTOR, "div.container > button[type='submit']")
    
  4. Podľa XPath: Jazyk dotazov na vyhľadávanie uzlov v XML dokumente (vrátane HTML). Umožňuje nájsť prvky podľa ich umiestnenia v DOM, atribútov, textov. Dobré na vyhľadávanie prvkov bez unikátnych ID/tried alebo na navigáciu podľa rodičovských/detinských prvkov. Môže byť menej výkonné ako CSS selektory.

    # Vyhľadanie prvku podľa XPath
    driver.find_element(By.XPATH, "//div[@class='form']//input[@name='password']")
    
  5. Podľa názvu tagu (Tag Name): Vyhľadanie všetkých prvkov s určitým tagom. Zriedkavo sa používa na lokalizáciu konkrétneho prvku, skôr na získanie zoznamu.

    # Vyhľadanie všetkých div prvkov
    driver.find_elements(By.TAG_NAME, "div")
    
  6. Podľa textu odkazu (Link Text/Partial Link Text): Špeciálne pre prvky <a> (odkazy).

    # Vyhľadanie odkazu podľa presného textu
    driver.find_element(By.LINK_TEXT, "Kliknite sem")
    
    # Vyhľadanie odkazu podľa čiastočného textu
    driver.find_element(By.PARTIAL_LINK_TEXT, "Kliknite")
    
  7. Podľa mena (Name): Vyhľadanie podľa hodnoty atribútu name. Často používané pre polia formulárov.

    # Vyhľadanie prvku podľa atribútu name
    driver.find_element(By.NAME, "username")
    

Pri výbere lokalizátora sa riadim nasledujúcimi princípmi:

  • Unikátnosť: Lokalizátor by mal jednoznačne identifikovať požadovaný prvok.
  • Stabilita: Vyberám lokalizátory, ktoré sú najmenej pravdepodobné, že sa zmenia pri zmenách v dizajne alebo štruktúre stránky (preferujem ID a atribúty, nie pozičné XPath).
  • Čitateľnosť a udržiavateľnosť: Lokalizátor by mal byť zrozumiteľný.

Pri použití CSS selektorov alebo XPath sa snažím vyhýbať závislostiam od hlbokého alebo absolútneho vnorovania v štruktúre DOM, radšej hľadám prvky vzhľadom na najbližšieho unikátneho rodiča alebo podľa ich vlastných atribútov. Používam DevTools pre inspekciu DOM a ladenie lokalizátorov.