CodeGym /Kursy /Python SELF PL /Zamykanie i testowanie skryptu

Zamykanie i testowanie skryptu

Python SELF PL
Poziom 36 , Lekcja 4
Dostępny

1. Zamykanie sesji

Jak poprawnie zamknąć sesję przeglądarki

A więc masz świetny skrypt, który zbiera dane, klika przyciski i robi mnóstwo magicznych rzeczy w przeglądarce. Teraz ważne jest, aby poprawnie zakończyć jego pracę. Wyobraź sobie, że twoja przeglądarka to powolny słoń: nie możesz po prostu zatrzasnąć drzwi i odejść. Musisz grzecznie i spokojnie zamknąć jej pracę. Do tego użyj metody quit().

Python

from selenium import webdriver

# Inicjalizacja drivera przeglądarki
driver = webdriver.Chrome()

# tutaj dzieje się magia przeglądania... 🧙‍♂️

# Zamykanie przeglądarki
driver.quit()

Metoda quit() zamyka wszystkie okna przeglądarki i kończy jej pracę. Jeśli zapomnisz ją wywołać, zaczną się dziwne historie z otwartą przeglądarką w tle i tajemniczym wyciekiem pamięci. A szczęśliwe życie, przyznaj, chce każdy.

Rozwiązywanie problemów z zawieszonymi procesami przeglądarki

Czasami po pracy z Selenium procesy przeglądarki wciąż wiszą w tle, jak niezdecydowane jednostki w strategii czasu rzeczywistego. Może się to zdarzyć, na przykład, jeśli twój skrypt "padł" gdzieś w środku. Jednym ze sposobów poradzenia sobie z tym problemem jest użycie masowego zamykania procesu, na przykład za pomocą psutil w Pythonie lub innych systemowych poleceń.

Python

import psutil

# Zamykanie wszystkich zawieszonych procesów Chrome
for proc in psutil.process_iter():
    # Sprawdzamy, czy proces należy do przeglądarki
    if 'chrome' in proc.name().lower():
        proc.kill()

To nie jest najbardziej elegancki sposób, ale czasami nie ma innej opcji, jeśli procesy stają się niekontrolowane. Pamiętaj, że przy tym zabijesz wszystkie procesy przeglądarki, więc używaj z rozwagą.

2. Testowanie skryptu

Sprawdzanie poprawności wykonywania wszystkich kroków w scenariuszu

Ukończenie pracy skryptu to tylko połowa sukcesu. Ważne jest, aby upewnić się, że każdy krok wykonywany jest poprawnie. Do tego świetnie nadają się narzędzia do testowania oprogramowania, takie jak unittest lub pytest. Możesz pisać testy, aby upewnić się, że twój skrypt poprawnie otwiera strony, klika przyciski i zbiera dane.

Przeanalizujmy minimalistyczny test z użyciem unittest:

Python

import unittest
from selenium import webdriver

class TestBrowserAutomation(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()

    def test_open_page(self):
        self.driver.get("https://example.com")
        self.assertEqual("Example Domain", self.driver.title)

    def tearDown(self):
        self.driver.quit()

unittest.main()

Ten test sprawdza, że nasz skrypt otwiera stronę https://example.com i tytuł strony odpowiada oczekiwaniom. To prosty, ale potężny sposób, aby upewnić się, że kluczowe części twojego skryptu działają poprawnie.

Debugowanie i optymalizacja

Czasami nawet po napisaniu testów twój skrypt zachowuje się, jak kapryśne dziecko, odmawiając poprawnej pracy. Wtedy na scenę wchodzi debugowanie. Używaj print(), aby wyświetlić wartości pośrednie, śledząc, gdzie dokładnie coś poszło nie tak. Wplecione zabawne komentarze w kod oczywiście mile widziane, ale nie zapominaj o celu: zrozumieć, co się dzieje.

Na przykład, napotkałeś problem, że some_element nie istnieje na stronie:

Python

try:
    some_element = driver.find_element_by_id('missing-id')
except Exception as e:
    print(f"Coś poszło nie tak: {e}")

Dodatkowo, uważnie monitoruj wydajność swojego skryptu. Czasami, aby go zoptymalizować, można użyć różnorodnych strategii, takich jak zmniejszenie częstotliwości zapytań lub optymalizacja logiki wyszukiwania elementów.

Zapobieganie awariom i błędom w przyszłości

Po optymalizacji i debugowaniu twój skrypt powinien działać bez zarzutu, jak szwajcarski zegarek, ale zawsze istnieje ryzyko pojawienia się nowych problemów. Możesz używać systemów logowania, takich jak logging, aby zapisywać, co dzieje się w twoim skrypcie. To pozwoli zobaczyć, gdzie i dlaczego coś poszło nie tak.

Python

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

logger.info("Początek pracy skryptu")

# loguj więcej akcji tutaj...

logger.info("Zakończenie pracy skryptu")

Pamiętaj, że zawsze warto zakładać margines na nieoczekiwane zdarzenia, zwłaszcza jeśli pracujesz z niestabilnymi danymi lub stronami. Rozważ wdrożenie systemu ponawiania i timeoutów, aby skrypt nie padał przy najmniejszym błędzie.

1
Ankieta/quiz
Praca z formularzami, poziom 36, lekcja 4
Niedostępny
Praca z formularzami
Praca z formularzami
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION