1. Elementlərin axtarılması əsasları
Elementlərin axtarılması metodları
Koda baş dalmadan öncə, Selenium vasitəsilə veb səhifədə elementləri necə axtaracağımızı anlamaq vacibdir. Selenium elementləri tapmaq üçün bir neçə rahat metodlar təklif edir:
-
find_element_by_id()
: Elementi onun unikal identifikatoru (id) ilə tapır. -
find_element_by_name()
: Elementi onunname
atributu ilə tapmağa imkan verir. -
find_element_by_class_name()
: Müəyyən class (sinif) təyin olunmuş elementləri tapır. -
find_element_by_tag_name()
: Elementləri tag adı ilə tapır, məsələn,div
,p
,a
.
Sadə bir misaldan başlayaq — id
vasitəsilə elementi tapmaq. Təsəvvür edin ki, "Sehrli düymə" yazısı olan düyməni itirmişik və onu tapmalıyıq:
from selenium import webdriver
# Driver-i sazlamaq və brauzeri açmaq
driver = webdriver.Chrome()
driver.get('https://example.com')
# Elementi onun id-si ilə tapmaq
magic_button = driver.find_element_by_id('magic_button_id')
# Tapılmış elementlə işləmək (məsələn, mətni çıxarmaq)
print(magic_button.text)
# Sessiyanın tamamlanması
driver.quit()
Tapılmış elementlərlə işləmək
Elementi tapdıqdan sonra onunla nə edəcəyimizə qərar veririk. Təsəvvürümüzü işə salıb Selenium-un metodlarından istifadə edə bilərik, məsələn, elementin mətnini əldə etmək üçün text
və ya hər hansı digər atributunun dəyərini çıxarmaq üçün get_attribute('attribute_name')
.
Tutaq ki, bizim element linkdir və biz bilmək istəyirik ki, o hara yönləndirir. Bunu necə edəcəyimizi göstəririk:
# Linki olan elementi tapmaq
link_element = driver.find_element_by_class_name('link_class')
# href atributundan URL çıxarmaq
link_url = link_element.get_attribute('href')
print(f'Bu link yönləndirir: {link_url}')
2. find_element_by_id()
metodu
find_element_by_id()
metodu veb səhifədə elementləri axtarmağın ən sürətli və etibarlı üsullarından biridir. Bu, elementləri onların unikal id
atributu vasitəsilə tapmağa imkan verir. HTML-də id
atributu unikal identifikator rolunu oynayır, ona görə də metodun yalnız lazım olan tək element qaytaracağına əmin ola bilərsiniz.
İstifadə nümunəsi:
element = driver.find_element_by_id("submit-button")
Bu nümunədə Selenium id="submit-button"
olan elementi tapır və onu element
dəyişənində saxlayır. Bu yanaşma düymələr, formalar, daxil etmə sahələri və səhifədə nadir hallarda təkrarlanan digər unikal elementlərin axtarışı üçün çox rahatdır.
Nə zaman istifadə etməli?
find_element_by_id()
metodu istifadə edilməyi tövsiyə edilir, əgər elementin unikal id
identifikatoru varsa, çünki bu metod elementə sürətli və dəqiq girişi təmin edir.
2. find_element_by_name()
metodu
find_element_by_name()
metodu name
atributuna görə elementləri axtarır. Bu metod tez-tez formalar və daxil etmə sahələri üçün istifadə olunur, xüsusilə də elementlər eyni class və ya id
-ə malik ola bilər, amma fərqli name
-ə malikdir. id
-dən fərqli olaraq, name
atributu unikallığı vacib deyil və bəzən eyni name
-ə malik bir neçə element səhifədə ola bilər.
İstifadə nümunəsi:
element = driver.find_element_by_name("username")
Bu kod name="username"
olan elementi axtarır. Adətən bu istifadəçi adı daxil etmək üçün olan form sahəsidir.
Nə vaxt istifadə etmək lazımdır?
Bu metod səhifədə elementin unikal bir id
-ə malik olmadığı halda, lakin name
atributu qeyd olunubsa faydalıdır. Xüsusilə formalar üçün effektivdir, burada elementlər tez-tez name
ilə identifikasiya olunurlar.
3. find_element_by_class_name()
metodu
find_element_by_class_name()
metodu elementi onun sinfinə (class
) görə axtarır. Bu metod CSS ilə iş üçün rahatdır və eyni stil tərtibatına malik elementləri tapmağa imkan verir. Hesaba alınmalıdır ki, class
bir neçə elementə təyin edilə bilər, ona görə də, yalnız bir elementi tapmaq lazım gəldikdə, unikal bir sinfi dəqiqləşdirmək və ya başqa bir metodu istifadə etmək vacibdir.
İstifadə nümunəsi:
element = driver.find_element_by_class_name("main-header")
Bu nümunədə Selenium main-header
sinfi ilə ilk elementi tapır.
Nə vaxt istifadə etməli?
find_element_by_class_name()
metodu çox vaxt başlıqları, düymələri və digər stilizə edilmiş elementləri axtarmaq üçün istifadə olunur. Bu metod xüsusilə, əgər elementlərin unikal id
və ya name
atributu yoxdursa və ya elementləri stilistik xüsusiyyətlərinə görə tapmaq lazım gəldikdə faydalıdır.
4. find_element_by_tag_name()
metodu
find_element_by_tag_name()
metodu elementləri tag adlarına görə axtarır, məsələn, div
, p
, a
, input
. Bu metod eyni tipli bütün elementləri əldə etmək üçün faydalıdır, xüsusilə səhifənin strukturu taglar əsasında asanlıqla naviqasiya etməyə imkan verirsə.
İstifadə nümunəsi:
element = driver.find_element_by_tag_name("h1")
Burada Selenium h1
tagına malik ilk elementi axtarır, bu adətən səhifədə başlıq üçün istifadə olunur.
Nə zaman istifadə etməli?
find_element_by_tag_name()
metodu başlıqların, şəkillərin, abzasların və səhifədə müəyyən bir tip tag ilə təqdim olunan digər elementlərin axtarışı üçün uyğundur. Ancaq bir tip tag səhifədə çox sayda ola bilər, buna görə bu metod hər zaman konkret elementi dəqiq göstərməyə bilər.
5. Xüsusiyyətlər və səhvlər
İrəliləmədən öncə, bir az dayanaq və HTML-in müxtəlifliyinə hörmət edək. Bəzən düymələr və ya şəkillər kimi elementlər unikal id və ya class-a sahib olmurlar. Belə hallarda, daha kompleks axtarış metodları, məsələn, XPath və CSS-selektorlar köməyimizə çatır, hansı ki, biz onlarla növbəti dərsdə danışacağıq. Amma əgər siz bu cür elementlərlə artıq indi qarşılaşmısınızsa, narahat olmayın. Bu, veb-avtomatlaşdırma dünyasında əyləncənin bir hissəsidir.
Selektorların zərifliyi
id
və class
kimi atributlarla iş zamanı yadda saxlayın ki, onlar dəyişə bilər. Birdən-birə dəyişən id
ilə element seçimi səhvə səbəb ola bilər. Bu, xüsusilə identifikatorların təsadüfi ola bildiyi dinamik olaraq yaradılan səhifələrdə aktualdır. Həll? Daha sabit atributlardan istifadə edin və ya kombinasiya yanaşmalarına müraciət edin.
6. Praktik tətbiq
İndi biz bilirik ki, elementləri id
, sinifə və ada görə necə axtarmaq olar. Bu biliklər kifayət qədər faydalıdır, xüsusilə veb-səhifələrlə interaksiyanı avtomatlaşdırmaq məsələsi ortaya çıxdıqda. Muvəffəqiyyətlə tapılan elementlər formaların doldurulması, düymələrin basılması və ya məlumatların çıxarılması üçün istifadə edilə bilər — hətta bu cür hərəkətlər işinizi sürətləndirə və monoton vəzifələrdən azad edə bilər.
Təsəvvür edin ki, bir şirkətdə hər bir əməkdaş gündə 10 dəqiqəni eyni formu doldurmaq üçün sərf edir. Burda isə meydana Selenium çıxır: birkaç dəqiqəyə bütün bu rutin işlərlə məşğul olur, siz isə səhər qəhvənizdən həzz alırsınız.
Artıq bu mövzuya marağı olanlar üçün, Selenium ilə avtomatlaşdırma veb-tətbiqlərin test olunmasında, saytlardakı dəyişikliklərin monitorinqində və hətta sevdiyiniz sosial şəbəkədə unudulmuş parolun bərpası üçün istifadə olunur. Təbii ki, əgər birdən algoritmlar o panda şəkillərində siz olmadığınızı düşünərsə.
GO TO FULL VERSION