Sobes.tech
Junior

Kaip rasi lokalizatorius elementams interneto puslapyje?

sobes.tech AI

Atsakymas iš AI

Elementų lokalizacijai naudoju šiuos metodus, pradedant nuo patikimiausių:

  1. Pagal ID: Unikalus elemento identifikatorius. Labiausiai stabilus variantas, jei ID yra nustatytas kūrėjų.

    # Elemento paieška pagal ID
    driver.find_element(By.ID, "element_id")
    
  2. Pagal klasę (klasės pavadinimą): Paieška pagal class atributo reikšmę. Gali būti mažiau unikali nei ID.

    # Elemento paieška pagal klasės pavadinimą
    driver.find_element(By.CLASS_NAME, "element_class")
    
  3. Pagal CSS selektorių: Galingas įrankis, leidžiantis rasti elementus pagal įvairius atributus, DOM struktūrą, pseudo-klases ir kt. Lankstumas, kuris yra palyginamas su XPath, bet sintaksė dažnai paprastesnė ir vykdymas greitesnis.

    # Elemento paieška pagal CSS selektorių
    driver.find_element(By.CSS_SELECTOR, "div.container > button[type='submit']")
    
  4. Pagal XPath: Užklausų kalba XML dokumentų (įskaitant HTML) mazgų paieškai. Leidžia rasti elementus pagal jų padėtį DOM, atributus, tekstus. Gerai ieškoti elementų, kurių neturi unikalių ID/klasės ar naudoti naršymo pagal tėvų/vaikų elementus. Gali būti mažiau efektyvu nei CSS selektoriai.

    # Paieška pagal XPath
    driver.find_element(By.XPATH, "//div[@class='form']//input[@name='password']")
    
  5. Pagal žymės pavadinimą (Tag Name): Visų elementų paieška pagal žymės pavadinimą. Retai naudojama konkrečiam elementui rasti, dažniau – sąrašo gavimui.

    # Visų div elementų paieška
    driver.find_elements(By.TAG_NAME, "div")
    
  6. Pagal nuorodos tekstą (Link Text/Partial Link Text): Ypatingai <a> elementams.

    # Nuorodos paieška pagal tikslų tekstą
    driver.find_element(By.LINK_TEXT, "Spauskite čia")
    
    # Nuorodos paieška pagal dalinį tekstą
    driver.find_element(By.PARTIAL_LINK_TEXT, "Spauskite")
    
  7. Pagal pavadinimą (Name): Paieška pagal name atributo reikšmę. Dažnai naudojama formų laukeliams.

    # Elemento paieška pagal `name` atributą
    driver.find_element(By.NAME, "username")
    

Pasirenkant lokalizatorių vadovaujuosi šiais principais:

  • Unikalumas: Lokalizatorius turi unikalų identifikatorių.
  • Stabilumas: Pasirinkiu tokius, kurie mažiausiai keisis keičiant dizainą ar struktūrą (pirmenybė – ID ir atributai, o ne poziciniai XPath).
  • Skaitomumas ir palaikymas: Lokalizatorius turi būti aiškus.

Naudojant CSS selektorius ar XPath, stengiuosi vengti priklausomybės nuo gilaus ar absoliutaus įdėjimo į DOM struktūrą, ieškau elementų pagal jų artimiausius unikalius tėvus arba pagal jų pačių atributus. Naudoju naršyklės DevTools DOM inspekcijai ir lokalizatorių derinimui.