Sobes.tech
Junior

როგორ იპოვით ელემენტების ლოკატორებს ვებგვერდზე?

sobes.tech AI

პასუხი AI-სგან

ელემენტების ლოკალიზაციისთვის მე ვიყენებ შემდეგი მიდგომებს, დაწყებული ყველაზე საიმედოებიდან:

  1. ID-ის მიხედვით: უნიკალური ელემენტის იდენტიფიკატორი. ყველაზე სტაბილური ვარიანტი, თუ ID დადგენილია დეველოპერების მიერ.

    # ელემენტის ძიება ID-ის მიხედვით
    driver.find_element(By.ID, "element_id")
    
  2. კლასის (კლასის სახელის) მიხედვით: ძიება class ატრიბუტის მნიშვნელობით. შეიძლება იყოს ნაკლებად უნიკალური, ვიდრე ID.

    # ელემენტის ძიება კლასის სახელით
    driver.find_element(By.CLASS_NAME, "element_class")
    
  3. CSS-სელექტორის მიხედვით: ძლიერი ინსტრუმენტი, რომელიც საშუალებას აძლევს იპოვოთ ელემენტები სხვადასხვა ატრიბუტებით, DOM-ის სტრუქტურით, псევდოკლასებით და ა.შ. მოქნილი, რომელიც შედარებით მარტივია და სწრაფი შესრულება აქვს, ვიდრე XPath.

    # ელემენტის ძიება CSS-სელექტორით
    driver.find_element(By.CSS_SELECTOR, "div.container > button[type='submit']")
    
  4. XPath-ის მიხედვით: კითხვა XML დოკუმენტში (შესაბამისად HTML) ნოდების ძიებისათვის. საშუალებას აძლევს იპოვოთ ელემენტები მათი მდებარეობით DOM-ში, ატრიბუტებით, ტექსტებით. კარგია ელემენტების ძიებისთვის, რომლებსაც არ აქვთ უნიკალური ID/კლასები ან სურსათის ნავიგაციისთვის მშობელ-შვილური ელემენტებით. შეიძლება იყოს ნაკლებად ეფექტური, ვიდრე CSS-სელექტორები.

    # XPath-ის გამოყენებით ელემენტის ძიება
    driver.find_element(By.XPATH, "//div[@class='form']//input[@name='password']")
    
  5. ტეგის სახელით (Tag Name): ყველა ელემენტის ძიება კონკრეტული ტეგით. იშვიათად გამოიყენება კონკრეტული ელემენტის დასადგენად, უფრო ხშირად - სიის მიღებისთვის.

    # ყველა div ელემენტის ძიება
    driver.find_elements(By.TAG_NAME, "div")
    
  6. ლინკის ტექსტით (Link Text/Partial Link Text): <a> ელემენტებისთვის.

    # ლინკის ძიება ზუსტი ტექსტით
    driver.find_element(By.LINK_TEXT, "დააწკაპუნეთ აქ")
    
    # ნაწილობრივი ტექსტით ლინკის ძიება
    driver.find_element(By.PARTIAL_LINK_TEXT, "დააწკაპუნეთ")
    
  7. სახელის (Name) მიხედვით: name ატრიბუტის მნიშვნელობით. ხშირად გამოიყენება ფორმის ველებისთვის.

    # ელემენტის ძიება `name` ატრიბუტით
    driver.find_element(By.NAME, "username")
    

ლოკალიზატორის არჩევისას მე ვეყრდნობი შემდეგ პრინციპებს:

  • უნიკალურობა: ლოკალიზატორი უნდა უნიკალურად განსაზღვროს საჭირო ელემენტი.
  • ტევადობა: ვარჩევ ლოკალიზატორებს, რომლებიც ნაკლებად შეიცვლება გვერდის დიზაინის ან სტრუქტურის ცვლილებისას (პრიორიტეტი ID და ატრიბუტებს მიანიჭე, არა პოზიციურ XPath-ს).
  • საკითხი და შენარჩუნებადი: ლოკალიზატორი უნდა იყოს გასაგები.

CSS-სელექტორების ან XPath-ის გამოყენებისას ვცდილობ, თავიდან ავიცილო ღრმა ან აბსოლუტური ჩაშენება DOM-ის სტრუქტურაში, ვეძებ ელემენტებს ყველაზე ახლო უნიკალურ მშობელთან ან მათი საკუთარი ატრიბუტებით. ვხმარობ ბრაუზერის DevTools-ს DOM-ის ინსპექციისა და ლოკალიზატორების დათვალიერებისთვის.