1. Veb-səhifələrin açılması: ilk addımlar
Əgər sən nə vaxtsa veb-səhifələrin hakimi olmağı xəyal etmisənsə, doğru dərsdəsən. Bu gün biz Selenium vasitəsilə veb-səhifələr açmağı və onlarla qarşılıqlı əlaqə qurmağı öyrənəcəyik. Təsəvvür et ki, sən brauzeri idarə edən bir dirijorsan, amma orkestr internetdir, partitura isə Python kodudur. Haydı, konsertimizi başlayaq!
Veb-səhifə ilə qarşılıqlı əlaqəyə başlamazdan əvvəl onu açmalıyıq, düzdür? Bu, kitab tapmaqdan əvvəl kitabxanaya daxil olmaq kimidir. Selenium-da veb-səhifələrin açılması brauzer sürücüsü vasitəsilə həyata keçirilir. Hazırda biz güman edirik ki, sende artıq Selenium və uyğun brauzer sürücüsü (məsələn, ChromeDriver və ya GeckoDriver) quraşdırılıb. Əgər əvvəlki dərsi keçmisənsə, bunun necə edildiyini bilirsən. Əks halda, geri qayıt və onu bir də oxu.
İndi gəlin veb-səhifənin sadə şəkildə necə açılacağını nəzərdən keçirək:
from selenium import webdriver
# Chrome üçün veb-drayver nümunəsi yaradırıq
driver = webdriver.Chrome()
# Veb-səhifəni açırıq
driver.get('https://www.example.com')
# Səhifənin başlığını konsola çıxarırıq
print(driver.title)
# Brauzeri bağlayırıq
driver.quit()
Kodda nə baş verir:
- webdriver-i import edirik: Bu Selenium-un əsas hissəsidir, brauzeri idarə etməyə imkan verir.
- Drayver yaradırıq: Burada biz Chrome üçün drayver obyektini yaradırıq. Bu, uyğun sürücünüz olan istənilən brauzer ola bilər.
- Səhifəni açırıq:
get()
metodu URL vasitəsilə göstərilən səhifəni yükləyir. - Başlığı əldə edirik:
driver.title
istifadə edərək cari səhifənin başlığını konsola çıxara bilərsiniz. - Brauzeri bağlayırıq:
quit()
metodu brauzer ilə işə son qoyur.
Beləliklə, ilk veb-səhifəni açdıq! Bu, dünyanı ələ keçirmək... əə... istəyirəm deyim ki, avtomatlaşmaya doğru ilk addımdır!
2. Naviqasiya və tablarla iş
Sadəcə bir səhifə açmaq kifayət deyil. Çox zaman biz səhifələr arasında hərəkət etməli və ya hətta bir neçə tab açmalı oluruq. Özünüzü bir anda müxtəlif yerlərə teleportasiya edə bilən səyahətçi kimi təsəvvür edin. Selenium ilə bu mümkündür.
Səhifələr üzrə hərəkət
Bir səhifədən digərinə keçid açmaq qədər sadədir:
# Başqa səhifəyə keçid
driver.get('https://www.example.org')
# Əvvəlki səhifəyə qayıtmaq üçün back() metodundan istifadə edirik
driver.back()
# İrəli getmək üçün forward() metodundan istifadə edirik
driver.forward()
Tablarla iş
Yeni bir tab açmaq necədir? Bu, fərqli şəhərlərin kitabxanalarına noutbuku özünlə aparmaq kimidir!
# Yeni tab açırıq və ona keçid edirik
driver.execute_script("window.open('https://www.example.com', '_blank');")
driver.switch_to.window(driver.window_handles[1])
# İlk taba qayıdırıq
driver.switch_to.window(driver.window_handles[0])
İzah:
-
execute_script()
: Brauzerdə JavaScript kodu icra etmək üçün istifadə edilir. Burada yeni bir tab açırıq. -
switch_to.window()
: Bu metod tablar arasında keçid etməyə imkan verir.window_handles
istifadə edərək bütün açıq tabların siyahısına daxil oluruq.
3. Veb-səhifələr ilə qarşılıqlı əlaqə
İndi ki, səhifələri açmağı və onlarla naviqasiya etməyi öyrəndik, gəlin birbaşa qarşılıqlı əlaqəyə keçək — əsl proqramçı kimi! Bu, hər bir veb-səhifə ilə rəqs etməyi və bunu ustalıqla etməyi öyrənməyə bənzəyir.
Qarşılıqlı əlaqə interfeysi
Gəlin, səhifədə elementlərlə necə qarşılıqlı əlaqə qurmağın bir nümunəsini görək. Məsələn, mətni daxil etmək üçün mətn sahəsinin axtarışı:
# Elementi adına görə tapırıq
search_box = driver.find_element_by_name('q')
# Tapılan mətn sahəsinə mətn daxil edirik
search_box.send_keys('Selenium Python')
# Axtarış düyməsini tapırıq və üzərinə klik edirik
submit_button = driver.find_element_by_name('btnK')
submit_button.click()
İzah:
-
find_element_by_name()
: Adına görə elementi tapmaq üçün istifadə olunan metod. Burada biz axtarış mətn sahəsini tapırıq. -
send_keys()
: Tapılan elementə mətn daxil etməyə imkan verir. -
click()
: Elementə, məsələn, düyməyə klikləməni simulyasiya etmək üçün istifadə olunur.
Əlavə metodlar
Elementlərlə daha mürəkkəb qarşılıqlı əlaqələr üçün bir çox metod var. Daha dərin öyrənmək üçün Selenium sənədini nəzərdən keçirin. Biz burada bəzi əsas metodları müzakirə edəcəyik.
-
find_element_by_id()
: Elementi ID-yə görə tapır. -
find_element_by_class_name()
: Elementi sinfə görə tapır. -
find_element_by_css_selector()
: CSS selektorlarından istifadə edərək tapır.
İndi siz səhifələri açıb araşdırmaq üçün əsl veb-səyyah kimi hərəkət edə bilərsiniz! Eksperiment etməkdən və yeni şeylər sınamaqdan çəkinməyin. Deyilən kimi, "səhvlər — uğur yolunda pillələrdir", xüsusilə də əgər kodunuz etibarlı və sınanmışdırsa!
Tipik səhvlər
Selenium ilə iş bir növ mina sahəsində gəzməyə bənzəyə bilər, əgər əsas tələləri bilmirsinizsə. Ən çox yayılmış səhvlərdən biri — brauzer sessiyasını bitirməyi unutmaqdır. Bu, brauzer proseslərinin yaddaşda asılı qalmasına səbəb ola bilər. Skriptinizin sonunda həmişə driver.quit()
istifadə edin.
Selenium ilə proqramçıların əzablarından biri də — veb-səhifələrin strukturunun dəyişdirilməsidir. Əgər element selektor ilə tapılıbsa və saytın tərtibatçısı HTML strukturunu dəyişdirərsə, skriptiniz qəfildən işləməməyə başlayacaq. Bu, bir otağa daxil olmağa çalışarkən qapını üzünüzə bağlasalar kimi bir hissdir. Əsas odur ki, çevik kod yazın və saytın dəyişikliklərinə uyğun olaraq onu mütəmadi yeniləyin.
GO TO FULL VERSION