CodeGym /Kurslar /Python SELF AZ /Səhifədəki ardıcıllıq hərəkətlərinin avtomatlaşdırılması ...

Səhifədəki ardıcıllıq hərəkətlərinin avtomatlaşdırılması üçün scriptin qurulması

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

1. Hərəkətlər ssenarisi və onun ardıcıllığı

Avtomatlaşdırma ssenarisini planlaşdırmağa başlayanda, nağıllardakı kimi sadədən mürəkkəbə doğru getməyin vacib olduğunu anlamaq lazımdır. Təsəvvür edin ki, sizin skriptiniz veb-səhifələrdə səyahətə çıxan qəhrəmandır. Hər addım düşünülmüş və düzgün qurulmuşdur ki, yolunuzdan sapmayasınız.

Avtomatlaşdırma üçün addım-addım ssenari yaratmaq

Plan tərtib etməkdən başlamaq lazımdır. Nəyə nail olmaq istəyirsiniz? Səhifə yükləmək, formanı doldurmaq, düyməni klik etmək? Necə deyərlər: "Planlaşdırmayan planı iflasa uğrayır." Biz iflas istəmirik, gəlin ehtimal olunan addımları qeyd edək.

Python

from selenium import webdriver
from selenium.webdriver.common.by import By

# Driver instansiyasını yaradırıq. Brauzerinizə uyğun driver istifadə edin.
driver = webdriver.Chrome()

# Səhifəni açırıq
driver.get('https://example.com/login')

# Login-i doldururuq
driver.find_element(By.NAME, 'username').send_keys('my_username')

# Şifrəni doldururuq
driver.find_element(By.NAME, 'password').send_keys('my_secure_password')

# Login düyməsini klik edirik
driver.find_element(By.ID, 'login-button').click()

Gördüyünüz kimi, biz ritmi təyin edirik. Ssenarinin hər bir addımı ardıcıl yerinə yetirilir ki, sizin skriptiniz saytda asanlıqla hərəkət edə bilsin.

Addımların icrasını loglama

Hər özünə hörmət edən qəhrəman kimi, bizim skriptimiz də izlər qoymalıdır ki, harada olduğunu və nə etdiyini bilək. Loglama — skriptinizin gündəliyi kimidir. Bu, addımların icrasını izləməyə və bir şey səhv gedərsə, səhvləri aşkar etməyə kömək edir.

Python

import logging

# Loglamanı qururuq
logging.basicConfig(level=logging.INFO)

# Hərəkət loglama nümunəsi
logging.info("Giriş səhifəsini açırıq")
driver.get('https://example.com/login')

Loglama təkcə debuggingdə kömək etmir, həm də sakitlik verir, bilirsiniz ki, sizin skript hər addımı düzgün yerinə yetirir. Əgər birdən bir şey səhv gedərsə, geriyə qayıdıb hansı məqamda nə baş verdiyini görə bilərsiniz.

2. Kodun oxunması və modifikasiyası üçün təşkilatlanma

Ssenari daha mürəkkəb olduqda, kodu nizama salmaq vacibdir. Böyük qonaqlı bir yubiley mərasimini təsəvvür edin: hər şey öz yerində deyilsə, xaos yaranır. Bizim situasiyada bu, kodda xaos olacaq.

Kodun strukturunun tənzimlənməsi

Koda dəyişiklikləri minimal səy ilə etmək üçün, kod yaxşı təşkil edilməlidir. Ayaqqabı tənzimləyici kimi hər şeyi qaydasına salmaq lazımdır. Təkrarlanan hərəkətləri ayrıca bloklara ayırmaq üçün funksiyalardan istifadə edin.

Python

def login_to_site(driver, username, password):
    logging.info("Login daxil edirik")
    driver.find_element(By.NAME, 'username').send_keys(username)
    
    logging.info("Şifrə daxil edirik")
    driver.find_element(By.NAME, 'password').send_keys(password)
    
    logging.info("Login düyməsini basırıq")
    driver.find_element(By.ID, 'login-button').click()

# Login üçün funksiyanı istifadə edirik
login_to_site(driver, 'my_username', 'my_secure_password')

Funksiyalardan istifadə kodu daha nizama salır və dəyişiklikləri asanlıqla etmək imkanı verir. Məsələn, əgər ID giriş düyməsi dəyişərsə, sadəcə bir funksiyada dəyişiklik edirsiniz, kodun hər yerində yox.

3. Nümunə: Saytda alış prosesinin avtomatlaşdırılması

Təsəvvür edək ki, bizə veb-saytda alış prosesini avtomatlaşdırmaq lazımdır, və bu aşağıdakı addımları əhatə edir:

  1. Saytın açılması və istifadəçi hesabına daxil olunması.
  2. Məhsul kataloquna keçid və məhsulun səbətə əlavə edilməsi.
  3. Səbətə keçid və alış-verişin tamamlanması.
Python

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Driver-i tənzimləmələrlə başlatma
def initialize_driver():
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)  # Səssiz gözləmə
    return driver

# İstifadəçi hesabına daxil olmaq üçün funksiya
def login(driver, username, password):
    driver.get("https://example.com")
    driver.find_element_by_id("username").send_keys(username)
    driver.find_element_by_id("password").send_keys(password)
    driver.find_element_by_id("login_button").click()

# Məhsul kataloquna keçid və məhsulun səbətə əlavə olunması üçün funksiya
def add_product_to_cart(driver):
    driver.get("https://example.com/catalog")
    product = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "product_item"))
    )
    product.click()

    add_to_cart_button = driver.find_element_by_id("add_to_cart")
    add_to_cart_button.click()

# Səbətə keçid və alış-verişin tamamlanması üçün funksiya
def checkout(driver):
    driver.get("https://example.com/cart")
    checkout_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "checkout"))
    )
    checkout_button.click()

# Driver-in işini bitirmək üçün funksiya
def close_driver(driver):
    driver.quit()

# Əməliyyat ardıcıllığını yerinə yetirmək üçün əsas skript
def main():
    # Məlumatların tənzimlənməsi
    username = "myusername"
    password = "mypassword"
    
    # Driver-i başlatma
    driver = initialize_driver()
    
    try:
        # Sayta giriş
        login(driver, username, password)
        
        # Kataloqa keçid və məhsulun səbətə əlavə olunması
        add_product_to_cart(driver)
        
        # Səbətə keçid və alışın tamamlanması
        checkout(driver)
    
    finally:
        # Driver-in bağlanması
        close_driver(driver)

# Əsas skriptin işə salınması
main()

Funksiyaların izahı

  1. initialize_driver() — driver-in başlatılması üçün funksiya. Bu funksiya bütün elementlər üçün səssiz gözləmə təyin edir və driver obyektini qaytarır.
  2. login() — sayta giriş üçün funksiya. Bu funksiya usernamepassword parametrlərini qəbul edir, hansı ki giriş formasını doldurmaq və düyməyə basmaq üçün istifadə olunur.
  3. add_product_to_cart() — kataloqa daxil olmaq, məhsul seçmək və onu səbətə əlavə etmək üçün funksiya.
  4. checkout() — səbətə keçmək və alış-verişi tamamlamaz üçün funksiya.
  5. close_driver() — driver-lə işin tamamlanması üçün funksiya.
  6. main() — funksiyaların ardıcıllığını idarə edən əsas funksiya. Burada bütün mərhələlərin çağırılması və giriş məlumatlarının təyin edilməsi baş verir.

Bu yanaşmanın üstünlükləri

  1. Oxunaqlılıq — hər bir mərhələ ayrı-ayrı funksiya şəklində formalaşdırılıb, bu kodun başa düşülməsini asanlaşdırır.
  2. Təkrar istifadə — ayrı-ayrı funksiyalar əsas skriptdən müstəqil olaraq istifadə edilə bilər, məsələn, saytda ayrıca əməliyyatları yerinə yetirmək üçün.
  3. Test asanlığı — hər bir mərhələ ayrıca test edilə bilər ki, hər şeyin düzgün işlədiyindən əmin olasınız.
  4. Elastiklik — lazım olduqda yeni funksiyalar əlavə etmək və ya main() içində əməliyyatların çağırılma sırasını dəyişmək olar.
1
Опрос
Selenium skriptlərinin optimallaşdırılması,  37 уровень,  4 лекция
недоступен
Selenium skriptlərinin optimallaşdırılması
Selenium skriptlərinin optimallaşdırılması
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION