CodeGym /Các khóa học /Python SELF VI /Hoàn thành công việc và kiểm tra script

Hoàn thành công việc và kiểm tra script

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Kết thúc session

Làm thế nào để đóng session trình duyệt đúng cách

Ok, bạn đã có một script tuyệt vời, thu thập dữ liệu, nhấn các nút và làm rất nhiều điều kỳ diệu trong trình duyệt. Giờ thì việc kết thúc đúng cách là rất quan trọng. Hãy tưởng tượng trình duyệt của bạn là một chú voi từ tốn: bạn không thể chỉ đóng cái "rầm" rồi đi được. Bạn cần lịch sự và nhẹ nhàng đóng nó. Để làm điều này, sử dụng phương thức quit().

Python

from selenium import webdriver

# Khởi tạo driver trình duyệt
driver = webdriver.Chrome()

# Đây là nơi phép màu duyệt web của bạn xảy ra... 🧙‍♂️

# Đóng trình duyệt
driver.quit()

Phương thức quit() đóng tất cả các cửa sổ trình duyệt và kết thúc nó. Nếu bạn quên gọi nó, sẽ xảy ra các tình huống kỳ lạ như trình duyệt mở trong nền và rò rỉ bộ nhớ không rõ ràng. Mà cuộc sống hạnh phúc, đồng ý đi, ai cũng muốn.

Giải quyết vấn đề với các tiến trình trình duyệt bị treo

Đôi khi sau khi làm việc với Selenium, các tiến trình trình duyệt vẫn còn treo trong chế độ nền, như các đơn vị lưỡng lự trong chiến lược thời gian thực. Điều này có thể xảy ra khi script của bạn bị "văng" đâu đó ở giữa. Một trong những cách để xử lý vấn đề này là sử dụng việc đóng tiến trình hàng loạt, ví dụ như với psutil trong Python hoặc các lệnh hệ thống khác.

Python

import psutil

# Đóng tất cả các tiến trình Chrome bị treo
for proc in psutil.process_iter():
    # Kiểm tra xem tiến trình có thuộc về trình duyệt không
    if 'chrome' in proc.name().lower():
        proc.kill()

Đây không phải là cách thanh tao nhất, nhưng đôi khi không còn lựa chọn nào khác khi các tiến trình trở nên không kiểm soát được. Hãy nhớ rằng khi làm điều này bạn sẽ giết tất cả các tiến trình trình duyệt, vì vậy hãy dùng với sự khôn ngoan.

2. Kiểm tra script

Kiểm tra sự chính xác của tất cả các bước trong kịch bản

Kết thúc script thành công chỉ là nửa chặng đường. Quan trọng là kiểm tra mỗi bước đều được thực hiện chính xác. Để làm điều này, các công cụ kiểm tra phần mềm, như unittest hoặc pytest, rất hữu ích. Bạn có thể viết các test để đảm bảo rằng script của bạn mở đúng trang, nhấn nút và thu thập dữ liệu một cách chính xác.

Hãy xem qua một test tối giản sử dụng 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()

Test này kiểm tra rằng script của chúng ta mở trang https://example.com và tiêu đề của trang đúng như mong đợi. Đây là một cách đơn giản nhưng mạnh mẽ để đảm bảo rằng các phần quan trọng của script của bạn hoạt động đúng.

Debug và tối ưu hóa

Đôi khi ngay cả sau khi viết test, script của bạn vẫn hành xử như một đứa trẻ khó tính, từ chối hoạt động chính xác. Đây là lúc debug ra tay cứu nguy. Sử dụng print() để in giá trị trung gian, nhằm tìm ra chính xác chỗ nào xảy ra vấn đề. Các chú thích vui vẻ trong mã tất nhiên được hoan nghênh, nhưng đừng quên mục tiêu: hiểu chuyện gì đang xảy ra.

Ví dụ, bạn gặp vấn đề rằng some_element không tồn tại trên trang:

Python

try:
    some_element = driver.find_element_by_id('missing-id')
except Exception as e:
    print(f"Ôi trời! Có gì đó sai: {e}")

Ngoài ra, hãy chú ý đến hiệu năng của script của bạn. Đôi khi, để tối ưu hóa công việc, bạn có thể áp dụng các chiến lược khác nhau, như giảm tần suất yêu cầu hoặc tối ưu hóa logic tìm kiếm phần tử.

Ngăn ngừa thất bại và lỗi trong tương lai

Sau khi tối ưu hóa và debug script của bạn nên hoạt động hoàn hảo, như một chiếc đồng hồ Thụy Sĩ, nhưng luôn có nguy cơ phát sinh vấn đề mới. Bạn có thể sử dụng hệ thống ghi log, như logging, để ghi lại những gì đang diễn ra trong script của bạn. Điều này giúp thấy rõ nơi và vì sao vấn đề xảy ra.

Python

import logging

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

logger.info("Bắt đầu chạy script")

# log thêm các hành động ở đây...

logger.info("Kết thúc script")

Hãy nhớ rằng luôn cần dự đoán các sự kiện bất ngờ, đặc biệt nếu bạn làm việc với dữ liệu không ổn định hoặc các trang không đáng tin cậy. Hãy cân nhắc tích hợp hệ thống retry và timeout để script không gặp lỗi với các sự cố nhỏ.

1
Опрос
Làm việc với forms,  36 уровень,  4 лекция
недоступен
Làm việc với forms
Làm việc với forms
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION