1. Логування
Сьогодні ми зануримося у тему, яка, можливо, врятує вам чимало нервових клітин і дорогоцінного часу — у логування та обробку помилок. Навіть найдосвідченіший програміст не застрахований від помилок, і ваше завдання — зробити ці помилки передбачуваними та керованими. Уявіть, що ви археолог на розкопках, і ваше завдання — оберігати свою експедицію від несподіваних обвалів і підступних пасток — а логування та обробка помилок це ваш надійний компас і щит у цій ризикованій справі!
Коли ми говоримо про логування у програмуванні, ми маємо на увазі процес запису інформації про роботу програми. Це процеси, які відбуваються всередині вашого коду і можуть бути не помітні з першого погляду. Записуючи логи, ви залишаєте собі підказки, як Гензель і Гретель залишали хлібні крихти в лісі, щоб повернутися додому.
Встановлення та налаштування логування
Почнемо з основних інструментів у Python. Для логування ми будемо використовувати вбудований модуль logging. Це ваш швейцарський ніж для запису інформації про хід виконання програми.
import logging
# Налаштування логування
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# Приклад використання
logging.info("Початок роботи скрипта")
logging.error("Це помилка")
Які є рівні логування?
- DEBUG: найдетальніша інформація, зазвичай цікава лише під час діагностики проблем.
- INFO: підтверджує, що процеси працюють, як очікувалось.
- WARNING: вказує на щось несподіване і потенційно проблематичне, але програма все ще працює.
- ERROR: лише серйозні помилки, які викликали збій у виконанні функції.
Ви можете налаштовувати рівень логування, щоб фільтрувати інформацію. Наприклад, якщо вас цікавлять лише помилки й попередження, встановіть рівень logging.WARNING.
Приклад логування у Selenium
Давайте подивимося, як логування може застосовуватися в проєкті з Selenium:
from selenium import webdriver
# Налаштування логування
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
try:
logging.info("Ініціалізація драйвера Chrome")
driver = webdriver.Chrome()
logging.info("Відкриття сторінки Python.org")
driver.get("https://www.python.org")
logging.info("Успішне завершення роботи")
except Exception as e:
logging.error(f"Сталася помилка: {e}")
finally:
driver.quit()
Цей приклад демонструє, як інтегрувати логування у ваш Selenium-скрипт для відстеження його виконання. Ми використовуємо try, except і finally для обробки помилок — про це докладніше нижче.
2. Обробка помилок у Selenium
У програмуванні, як і в житті, помилки неминучі. Але ми можемо контролювати, як ми на них реагуємо. Використання try, except, else і finally дозволяє елегантно перехоплювати і обробляти помилки.
Згадуємо роботу з винятками
Давайте згадаємо, як працює обробка винятків:
try:
# Код, який може викликати виняток
result = 10 / 0
except ZeroDivisionError as e:
# Код, який буде виконано, якщо виник виняток ZeroDivisionError
logging.error("Ділення на нуль неможливе!")
else:
# Код, який буде виконано, якщо виняток не виник
logging.info("Операція успішно виконана")
finally:
# Код, який буде виконано в будь-якому випадку
logging.info("Операції завершено")
Ваш код у блоці try буде виконано. Якщо виникає помилка типу ZeroDivisionError, код у блоці except буде виконуватись, і програма не впаде. Блок else використовується для виконання коду, якщо виняток не був викликаний. І нарешті, блок finally виконується завжди, незалежно від того, була помилка чи ні.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ