როგორ იპოვით ელემენტების ლოკატორებს ვებგვერდზე?
sobes.tech AI
პასუხი AI-სგან
ელემენტების ლოკალიზაციისთვის მე ვიყენებ შემდეგი მიდგომებს, დაწყებული ყველაზე საიმედოებიდან:
-
ID-ის მიხედვით: უნიკალური ელემენტის იდენტიფიკატორი. ყველაზე სტაბილური ვარიანტი, თუ ID დადგენილია დეველოპერების მიერ.
# ელემენტის ძიება ID-ის მიხედვით driver.find_element(By.ID, "element_id") -
კლასის (კლასის სახელის) მიხედვით: ძიება
classატრიბუტის მნიშვნელობით. შეიძლება იყოს ნაკლებად უნიკალური, ვიდრე ID.# ელემენტის ძიება კლასის სახელით driver.find_element(By.CLASS_NAME, "element_class") -
CSS-სელექტორის მიხედვით: ძლიერი ინსტრუმენტი, რომელიც საშუალებას აძლევს იპოვოთ ელემენტები სხვადასხვა ატრიბუტებით, DOM-ის სტრუქტურით, псევდოკლასებით და ა.შ. მოქნილი, რომელიც შედარებით მარტივია და სწრაფი შესრულება აქვს, ვიდრე XPath.
# ელემენტის ძიება CSS-სელექტორით driver.find_element(By.CSS_SELECTOR, "div.container > button[type='submit']") -
XPath-ის მიხედვით: კითხვა XML დოკუმენტში (შესაბამისად HTML) ნოდების ძიებისათვის. საშუალებას აძლევს იპოვოთ ელემენტები მათი მდებარეობით DOM-ში, ატრიბუტებით, ტექსტებით. კარგია ელემენტების ძიებისთვის, რომლებსაც არ აქვთ უნიკალური ID/კლასები ან სურსათის ნავიგაციისთვის მშობელ-შვილური ელემენტებით. შეიძლება იყოს ნაკლებად ეფექტური, ვიდრე CSS-სელექტორები.
# XPath-ის გამოყენებით ელემენტის ძიება driver.find_element(By.XPATH, "//div[@class='form']//input[@name='password']") -
ტეგის სახელით (Tag Name): ყველა ელემენტის ძიება კონკრეტული ტეგით. იშვიათად გამოიყენება კონკრეტული ელემენტის დასადგენად, უფრო ხშირად - სიის მიღებისთვის.
# ყველა div ელემენტის ძიება driver.find_elements(By.TAG_NAME, "div") -
ლინკის ტექსტით (Link Text/Partial Link Text):
<a>ელემენტებისთვის.# ლინკის ძიება ზუსტი ტექსტით driver.find_element(By.LINK_TEXT, "დააწკაპუნეთ აქ") # ნაწილობრივი ტექსტით ლინკის ძიება driver.find_element(By.PARTIAL_LINK_TEXT, "დააწკაპუნეთ") -
სახელის (Name) მიხედვით:
nameატრიბუტის მნიშვნელობით. ხშირად გამოიყენება ფორმის ველებისთვის.# ელემენტის ძიება `name` ატრიბუტით driver.find_element(By.NAME, "username")
ლოკალიზატორის არჩევისას მე ვეყრდნობი შემდეგ პრინციპებს:
- უნიკალურობა: ლოკალიზატორი უნდა უნიკალურად განსაზღვროს საჭირო ელემენტი.
- ტევადობა: ვარჩევ ლოკალიზატორებს, რომლებიც ნაკლებად შეიცვლება გვერდის დიზაინის ან სტრუქტურის ცვლილებისას (პრიორიტეტი ID და ატრიბუტებს მიანიჭე, არა პოზიციურ XPath-ს).
- საკითხი და შენარჩუნებადი: ლოკალიზატორი უნდა იყოს გასაგები.
CSS-სელექტორების ან XPath-ის გამოყენებისას ვცდილობ, თავიდან ავიცილო ღრმა ან აბსოლუტური ჩაშენება DOM-ის სტრუქტურაში, ვეძებ ელემენტებს ყველაზე ახლო უნიკალურ მშობელთან ან მათი საკუთარი ატრიბუტებით. ვხმარობ ბრაუზერის DevTools-ს DOM-ის ინსპექციისა და ლოკალიზატორების დათვალიერებისთვის.