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:
-
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") -
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") -
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']") -
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']") -
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") -
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") -
İ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.