1. Sessiyanın tamamlanması
Brauzer iş sessiyasını düzgün necə bitirməli
Deməli, sizdə möhtəşəm bir skript var, məlumat toplayır, düymələrə basır və brauzerdə bir sıra sehrli işlər görür. İndi isə onun işini düzgün bitirmək vacibdir. Təsəvvür edin ki, brauzeriniz asta-yavaş bir fil kimidir: qapını çırpıb çıxıb gedə bilməzsiniz. Onun işini nəzakətlə və sakitcə bitirmək lazımdır. Bunun üçün quit()
metodundan istifadə edin.
from selenium import webdriver
# Brauzer driver-inin inizializasiyası
driver = webdriver.Chrome()
# burada brauzer sehri baş verir... 🧙♂️
# Brauzerin işini tamamlayır
driver.quit()
quit()
metodu brauzerin bütün pəncərələrini bağlayır və onun işini tamamlayır. Əgər bu metodu çağırmağı unutsaq, arxa planda açıq bir brauzerlə və anlaşılmaz yaddaş sızması ilə bağlı qəribə hekayələr başlayacaq. Razılaşarsınız ki, xoşbəxt bir həyat hər kəsin istəyidir.
Bəzən Selenium ilə işdən sonra brauzer prosesləri fon rejimində qərarsız real vaxt strategiyasının vahidləri kimi qalıb "gəzə bilir". Məsələn, ssenariniz haradasa "düşübsə" belə bir vəziyyət baş verə bilər. Bu problemi həll etməyin bir yollarından biri paket prosesi ilə işin bitirilməsi, məsələn, Python-da psutil
və ya digər sistem komandalarından istifadə etməkdir.
import psutil
# Chrome-un qalıq proseslərini bağlamaq
for proc in psutil.process_iter():
# Prosesin brauzere aid olub olmadığını yoxlayırıq
if 'chrome' in proc.name().lower():
proc.kill()
Bu ən elegant üsul deyil, amma bəzi hallarda bu proseslər idarəolunmaz olduqda başqa variant qalmır. Unutmayın ki, belə bir halda bütün brauzer proseslərini bağlayacaqsınız, ona görə də ağılla istifadə edin.
2. Scriptin testləşdirilməsi
Ssenaridəki bütün addımların düzgün icrasının yoxlanılması
Scriptin uğurla tamamlanması işin yalnız yarısıdır. Hər bir addımın düzgün icra edildiyini yoxlamaq vacibdir. Bu məqsəd üçün proqram təminatının testləşdirilməsi alətləri, məsələn unittest
və ya pytest
, çox uyğundur. Testlər yaza bilərsiniz ki, scriptinizin səhifələri düzgün açdığını, düymələrə klik etdiyini və məlumatları topladığını təsdiqləyəsiniz.
unittest
istifadə edərək minimal test nümunəsini nəzərdən keçirək:
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()
Bu test, scriptimizin https://example.com səhifəsini açdığını və səhifənin başlığının gözləniləndən uyğun olduğunu yoxlayır. Bu, sadə, amma güclü bir üsuldur ki, skriptinizin əsas hissələrinin düzgün işlədiyini təsdiqləsin.
Debug və optimizasiya
Bəzən, testlər yazdıqdan sonra belə, scriptiniz inadkar bir uşaq kimi davranır, düzgün işləməkdən imtina edir. Bu zaman debug yardımınıza gəlir. print()
istifadə edərək aralıq dəyərləri çap edin ki, dəqiq nəyin səhv olduğunu izah edə biləsiniz. Əlbəttə ki, koda əyləncəli şərhlər əlavə etmək olar, amma əsas məqsədi unutmayın: vəziyyəti anlamaq.
Məsələn, səhifədə some_element tapılmayanda problem yaşayabilirsiniz:
try:
some_element = driver.find_element_by_id('missing-id')
except Exception as e:
print(f"Whoops! Nəsə səhv getdi: {e}")
Bundan əlavə, scriptinizin performansını diqqətlə izləyin. Bəzən, işləməni optimallaşdırmaq üçün sorğu tezliyini azaltmaq, ya da element axtarış məntiqini optimallaşdırmaq kimi müxtəlif strategiyalardan istifadə edə bilərsiniz.
Gələcəkdə xətaların və nasazlıqların qarşısını almaq
Optimizasiya və debugdan sonra scriptiniz İsveçrə saatı kimi dəqiq işləməlidir, amma həmişə yeni problemlərin yaranması riski var. logging
kimi log sistemlərindən istifadə edərək scriptinizdə nə baş verdiyini qeyd edə bilərsiniz. Bu, nəyin və niyə səhv getdiyini görə bilmənizə imkan verəcək.
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info("Scriptin işə başlaması")
# buraya əlavə hərəkətlərin logunu yazın...
logger.info("Scriptin tamamlanması")
Unutmayın ki, xüsusilə sabit olmayan məlumatlar və ya səhifələrlə işləyirsinizsə, gözlənilməz hadisələr üçün həmişə bir ehtiyat planı olmalıdır. Scriptin ən kiçik nasazlıq zamanı çöküməməsi üçün retry sistemi və ya timeout-ların tətbiqini nəzərdən keçirin.
GO TO FULL VERSION