CodeGym /Kurs Javy /Python SELF PL /Konfiguracja skryptu do automatyzacji sekwencji działań n...

Konfiguracja skryptu do automatyzacji sekwencji działań na stronie internetowej

Python SELF PL
Poziom 37 , Lekcja 4
Dostępny

1. Scenariusz działań i jego sekwencja

Kiedy zaczynamy planowanie scenariusza automatyzacji, ważne jest, aby zrozumieć, że tak jak w bajkach, trzeba iść od prostego do skomplikowanego. Wyobraź sobie, że twój skrypt to bohater, który wyrusza w podróż po stronach internetowych. Każdy krok jest przemyślany i odpowiednio skonfigurowany, aby się nie zgubić.

Tworzenie szczegółowego scenariusza automatyzacji

Na początku warto stworzyć plan. Co chcesz osiągnąć? Załadować stronę, wypełnić formularz, kliknąć przycisk? Jak to mawiają: „Kto nie planuje, ten planuje porażkę”. Porażki nie chcemy, więc rozpiszmy proponowane kroki.

Python

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

# Tworzymy instancję drivera. Użyj drivera, który odpowiada twojej przeglądarce.
driver = webdriver.Chrome()

# Otwieramy stronę
driver.get('https://example.com/login')

# Wypełniamy login
driver.find_element(By.NAME, 'username').send_keys('my_username')

# Wypełniamy hasło
driver.find_element(By.NAME, 'password').send_keys('my_secure_password')

# Klikamy przycisk logowania
driver.find_element(By.ID, 'login-button').click()

W ten sposób ustawiamy rytm naszego tańca. Każdy krok scenariusza wykonywany jest w określonej kolejności, aby skrypt mógł swobodnie poruszać się po stronie.

Logowanie kroków wykonania

Jak każdy szanujący się bohater, nasz skrypt powinien zostawiać ślady, abyśmy wiedzieli, gdzie był i co robił. Logowanie to jak dziennik twojego skryptu. Pomaga śledzić wykonywanie kroków i diagnozować błędy, jeśli coś pójdzie nie tak.

Python

import logging

# Konfigurujemy logowanie
logging.basicConfig(level=logging.INFO)

# Przykład logowania działania
logging.info("Otwieramy stronę logowania")
driver.get('https://example.com/login')

Logowanie nie tylko pomaga w debugowaniu, ale także daje spokój ducha, wiedząc, że twój skrypt wykonuje każdy krok poprawnie. Jeśli coś pójdzie nie tak, będziesz w stanie wrócić i zobaczyć, na którym etapie coś poszło nie tak.

2. Organizacja kodu dla czytelności i modyfikacji

Kiedy scenariusz staje się bardziej złożony, ważne jest, aby utrzymać porządek w kodzie. Wyobraź sobie jubileuszowe przyjęcie z masą gości i jedzenia: jeśli wszystko nie będzie uporządkowane, zrobi się chaos. W naszym przypadku — chaos w kodzie.

Konfiguracja struktury kodu

Aby wprowadzenie zmian w kodzie było jak najmniej pracochłonne, musi być dobrze zorganizowany. Jak sortownik skarpetek, trzeba wszystko uporządkować. Używaj funkcji, aby oddzielić powtarzające się działania w oddzielne bloki.

Python

def login_to_site(driver, username, password):
    logging.info("Wprowadzamy login")
    driver.find_element(By.NAME, 'username').send_keys(username)
    
    logging.info("Wprowadzamy hasło")
    driver.find_element(By.NAME, 'password').send_keys(password)
    
    logging.info("Klikamy przycisk logowania")
    driver.find_element(By.ID, 'login-button').click()

# Używamy funkcji do logowania
login_to_site(driver, 'my_username', 'my_secure_password')

Użycie funkcji sprawia, że kod jest bardziej uporządkowany i ułatwia wprowadzanie zmian, na przykład gdy zmieni się ID przycisku logowania, wystarczy zmienić to w jednej funkcji, a nie w całym kodzie.

3. Przykład: Automatyzacja procesu zakupu na stronie

Wyobraź sobie, że musimy skonfigurować automatyzację procesu zakupu na stronie, obejmującą następujące kroki:

  1. Otwieranie strony i logowanie do konta.
  2. Przejście do katalogu produktów i dodanie produktu do koszyka.
  3. Przejście do koszyka i realizacja zakupu.
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

# Inicjalizacja drivera z ustawieniami
def initialize_driver():
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)  # Domyślne oczekiwanie
    return driver

# Funkcja logowania do konta
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()

# Funkcja przejścia do katalogu produktów i dodania produktu do koszyka
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()

# Funkcja przejścia do koszyka i realizacji zakupu
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()

# Funkcja kończenia pracy drivera
def close_driver(driver):
    driver.quit()

# Główny skrypt do wykonania sekwencji działań
def main():
    # Konfiguracja danych
    username = "myusername"
    password = "mypassword"
    
    # Inicjalizacja drivera
    driver = initialize_driver()
    
    try:
        # Logowanie na stronę
        login(driver, username, password)
        
        # Przejście do katalogu i dodanie produktu do koszyka
        add_product_to_cart(driver)
        
        # Przejście do koszyka i realizacja zakupu
        checkout(driver)
    
    finally:
        # Zamknięcie drivera
        close_driver(driver)

# Uruchamianie głównego skryptu
main()

Wyjaśnienie funkcji

  1. initialize_driver() — funkcja do inicjalizacji web-drivera. Ustawia domyślne oczekiwanie dla wszystkich elementów i zwraca obiekt drivera.
  2. login() — funkcja do logowania na stronę. Przyjmuje parametry username i password, które są używane do wypełnienia formularza logowania i kliknięcia przycisku.
  3. add_product_to_cart() — funkcja do przejścia do katalogu, wyboru produktu i dodania go do koszyka.
  4. checkout() — funkcja do przejścia do koszyka i realizacji zakupu.
  5. close_driver() — funkcja do zakończenia pracy z driverem.
  6. main() — główna funkcja zarządzająca sekwencją działań. W niej wywoływane są wszystkie etapy, a także określane dane do logowania.

Zalety tego podejścia

  1. Czytelność — każdy etap jest oddzielnie opisany, co upraszcza zrozumienie kodu.
  2. Ponowne użycie — pojedyncze funkcje można używać niezależnie od głównego skryptu, na przykład do wykonania pojedynczych działań na stronie.
  3. Łatwość testowania — każdy etap można przetestować oddzielnie, aby upewnić się, że wszystko działa poprawnie.
  4. Elastyczność — w razie potrzeby można dodać nowe funkcje lub zmienić kolejność wywołań w main().
1
Опрос
Optymalizacja skryptów Selenium,  37 уровень,  4 лекция
недоступен
Optymalizacja skryptów Selenium
Optymalizacja skryptów Selenium
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION