Sobes.tech
Junior

Web sayfasındaki öğeler için konumlayıcıları nasıl bulacaksınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Elemanları bulmak için aşağıdaki yaklaşımları kullanıyorum, en güvenilir olanlardan başlamak üzere:

  1. ID ile: Elemanın benzersiz tanımlayıcısı. Geliştiriciler tarafından sağlanmışsa en stabil seçenektir.

    # ID ile eleman arama
    driver.find_element(By.ID, "element_id")
    
  2. Sınıf (sınıf adı) ile: class özniteliğinin değeriyle arama. ID kadar benzersiz olmayabilir.

    # Sınıf adıyla eleman arama
    driver.find_element(By.CLASS_NAME, "element_class")
    
  3. CSS seçici ile: Güçlü bir araç, çeşitli öznitelikler, DOM yapısı, pseudo-sınıflar vb. kullanılarak elemanlar bulunabilir. Esneklik XPath ile karşılaştırılabilir, ancak sözdizimi genellikle daha basit ve yürütme daha hızlıdır.

    # CSS seçici ile eleman arama
    driver.find_element(By.CSS_SELECTOR, "div.container > button[type='submit']")
    
  4. XPath ile: XML belgesinde (HTML dahil) düğümleri bulmak için sorgu dili. DOM'daki konumlarına, özniteliklere, metinlere göre elemanlar bulmaya olanak tanır. Benzersiz ID/sınıf olmayan veya ebeveyn/çocuk navigasyonu için kullanışlıdır. CSS seçicilere göre daha az performanslı olabilir.

    # XPath ile eleman arama
    driver.find_element(By.XPATH, "//div[@class='form']//input[@name='password']")
    
  5. Etiket adıyla (Tag Name): Belirli bir etikete sahip tüm elemanları arar. Belirli bir elemanı bulmak için nadiren kullanılır, daha çok liste almak için.

    # Tüm div elemanlarını bul
    driver.find_elements(By.TAG_NAME, "div")
    
  6. Bağlantı metni (Link Text/Partial Link Text) ile: <a> (bağlantılar) için özel.

    # Tam metinle bağlantı arama
    driver.find_element(By.LINK_TEXT, "Buraya tıkla")
    
    # Kısmi metinle bağlantı arama
    driver.find_element(By.PARTIAL_LINK_TEXT, "Buraya")
    
  7. İsim (Name) ile: name özniteliğinin değeriyle arama. Form alanları için sık kullanılır.

    # name özniteliğiyle eleman arama
    driver.find_element(By.NAME, "kullaniciadi")
    

Locatör seçerken şu ilkeleri takip ediyorum:

  • Benzersizlik: Locatör, istenen elementi benzersiz şekilde tanımlamalıdır.
  • Stabilite: Tasarım veya sayfa yapısındaki değişikliklere en az değişecek locatörleri tercih ederim (ID ve özniteliklere öncelik veririm, konumsal XPath yerine).
  • Okunabilirlik ve bakım kolaylığı: Locatör anlaşılır olmalı.

CSS seçiciler veya XPath kullanırken, DOM yapısındaki derin veya mutlak bağımlılıklardan kaçınmaya çalışıyorum, en yakın benzersiz ebeveyn veya kendi öznitelikleriyle arama yapıyorum. Tarayıcıların DOM inceleme araçlarını kullanarak locatörleri hata ayıklıyor ve doğruluyorum.