CodeGym /Kurslar /Python SELF AZ /Veb-səhifədə formalar və düymələrlə işləmənin avtomatlaşd...

Veb-səhifədə formalar və düymələrlə işləmənin avtomatlaşdırılması üçün məlumatların toplanması

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Texniki əsaslar

Formaları doldurmaq və göndərmək

Formalarla işləmək tez-tez istifadəçilərin qeydiyyatı, anketlərin doldurulması, məlumatların toplanması və daha çox şeylərin avtomatlaşdırılması üçün tələb olunur. Əllə yüzlərlə forma doldurmaq — bu, sanki qarpızı samanla yeməyə çalışmaq kimidir. Amma bizim Selenium vasitəsilə super güclərimizlə bunu saniyələrdə edəcəyik.

Gəlin əvvəlcə, necə mətn sahələrini doldurmaq və formaları göndərmək məsələsini analiz edək. Sayta daxil olma formasının nümunəsində əsas addımları öyrənəcəyik:

Python

from selenium import webdriver

# Driver-i tənzimləmək (məsələn, ChromeDriver)
driver = webdriver.Chrome()

try:
    # Veb-səhifəni açmaq
    driver.get("https://example.com/login")

    # İstifadəçi adı üçün giriş sahəsini tapıb mətn daxil etmək
    username_input = driver.find_element_by_name("username")
    username_input.send_keys("mənim_loginim")

    # Şifrə üçün giriş sahəsini tapıb mətn daxil etmək
    password_input = driver.find_element_by_name("password")
    password_input.send_keys("mənim_şifrə")

    # Formanı göndərmək üçün düyməni tapıb klikləmək
    submit_button = driver.find_element_by_name("submit")
    submit_button.click()

finally:
    # Driver-i bağlamaq
    driver.quit()
    

Validasiya və səhvlərin emalı

Proqramçı gününü ən çox korlayan şeylərdən biri də lazımsız anlarda meydana çıxan səhvlərdir. Buna görə öncədən onları emal edirik. Səhvləri tutmaq üçün try/except istifadə edirik və nəyin tərs getdiyini anlamaq üçün logları saxlayırıq.

Python

try:
    username_input = driver.find_element_by_name("username")
    username_input.send_keys("mənim_loginim")
except Exception as e:
    print(f"İstifadəçi adını doldurarkən səhv: {e}")
    logging.error("İstifadəçi adını doldurarkən səhv", exc_info=True)
    

2. Checkbox-lar (Checkboxes)

Artıq düymələrə necə klik etməyi öyrəndiyimizə görə, gəlin siyahıdan bir neçə seçim edək. Checkbox-u seçmək və ya seçimi ləğv etmək üçün click() metodundan istifadə edə bilərik. Əgər checkbox-un seçilib-seçilmədiyini yoxlamaq lazımdırsa, is_selected() atributundan istifadə olunur.

Python

checkbox = driver.find_element_by_id("checkbox_id")
if not checkbox.is_selected():
    checkbox.click()
    

3. Seçicilər (Radio Buttons)

Seçicilər yalnız bir neçə seçim arasından birini seçməyə imkan verir. Onlarla bayraqlar kimi işləyə bilərsiniz: metodu click() istifadə edərək seçim edin və vəziyyəti is_selected() vasitəsilə yoxlayın.

Python

radio_button = driver.find_element_by_id("radio_button_id")
if not radio_button.is_selected():
    radio_button.click()
    

4. Açılan siyahılar (Dropdowns)

Açılan siyahılar seçim üçün bir neçə variant təqdim edir. Selenium-da Select sinifi var, hansı ki, bu siyahılarla işləmək üçün metodlar təqdim edir.

Python

from selenium.webdriver.support.ui import Select

dropdown = Select(driver.find_element_by_id("dropdown_id"))
dropdown.select_by_visible_text("Variant 1")
    

Həmçinin, variantları select_by_index() və ya select_by_value() vasitəsilə seçə bilərsiniz.

5. Mətn sahələri (Text Areas)

Mətn sahələri mətn xanalarına bənzəyir, lakin adətən çoxlu miqdarda mətn daxil etmək üçün istifadə olunur. Onlarla işləmək mətn xanaları ilə işləmək kimi eynidir.

Python

text_area = driver.find_element_by_id("textarea_id")
text_area.send_keys("Bu, mətn sahəsi üçün nümunə mətnidir.")
    

6. Təqvim (Date Picker)

Təqvim sahələri istifadəçilərə tarixləri seçməyə imkan verir. Əgər bu, sadə bir mətn sahəsidirsə, tarix formatını dəstəkləyərək, send_keys() funksiyası ilə lazım olan formatda dəyər daxil etmək olar.

Python

date_field = driver.find_element_by_id("date_field_id")
date_field.send_keys("2023-12-25")  # Tarix formatı saytdan asılı olaraq dəyişə bilər
    

Ancaq bəzi təqvim sahələri əlavə hərəkətlər tələb edir, məsələn, pop-up təqvimini açmaq və tarix seçmək.

7. Fayl sahələri (File Upload)

Bu sahələr serverə fayllar yükləməyə imkan verir. Onlarla send_keys() metodu vasitəsilə də qarşılıqlı fəaliyyət göstərmək olar, yəni lokal kompüterdə faylın yolunu göstərməklə.

Python

file_input = driver.find_element_by_id("file_upload_id")
file_input.send_keys("/path/to/file.txt")
    

8. Gizli sahələr (Hidden Fields)

Gizli sahələr səhifədə görünmür, lakin formanın göndərilməsi üçün lazım olan məlumatları saxlamaq üçün istifadə oluna bilər. Onlarla yalnız onların dəyərinə çıxışınız olduqda (məsələn, dəyəri yoxlamaq və ya dəyişmək üçün) əlaqə saxlamaq mümkündür.

Python

hidden_field = driver.find_element_by_id("hidden_field_id")
value = hidden_field.get_attribute("value")
print("Gizli sahənin dəyəri:", value)
    

9. Hərəkətlərin uğurlu icrasının yoxlanılması

Hərəkətlərin necə icra olunduğuna dair məlumat əldə etmək — uğurun göstəricisidir. Formanı göndərdikdən sonra mütləq əmin olmaq istəyirsiniz ki, sorğu uğurla qəbul edilib, düzdür? Bunu belə etmək olar:

Python

># Saytda uğurlu avtorizasiya yoxlanışı
if "Xoş gəldiniz" in driver.page_source:
    print("Avtorizasiya uğurla başa çatdı!")
else:
    print("Avtorizasiya zamanı səhv baş verdi.")
    

10. Problemlər və həllər

Problemlər

  • İşin qeyri-sabitliyi: Veb-səhifələr tez-tez dəyişir. Səhifə strukturunun dəyişməsi skriptlərin işləməsində nasazlıqlara səbəb ola bilər, buna görə də kodun aktuallığını mütəmadi yoxlamaq lazımdır.
  • Şəbəkə sürətindən asılılıq: Səhifələrin və elementlərin yüklənmə vaxtı fərqli ola bilər. Gecikmələri idarə etmək üçün explicit waits istifadə edin.

Həllər

  • Log yazma: Problemləri daha yaxşı başa düşmək üçün bütün fəaliyyətlərin logunu aparın. logging kitabxanası logların aparılmasını xeyli asanlaşdıracaq.
  • Kodun modularlığı: Dəyişiklikləri daha rahat etmək və test etmək üçün mürəkkəb fəaliyyətləri funksiyalar və modullara bölün.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION