CodeGym /課程 /Python SELF TW /結束工作與測試腳本

結束工作與測試腳本

Python SELF TW
等級 36 , 課堂 4
開放

1. 結束會話

如何正確結束瀏覽器會話

那麼,現在你有一個超棒的腳本,它可以收集資料、點擊按鈕,做許多瀏覽器裡的神奇事情。現在很重要的是要正確地結束它的工作。想像一下,瀏覽器就像是一隻悠閒的象:你不能突然關門然後離開。你必須禮貌而平靜地關閉它。為此,使用方法 quit()

Python

from selenium import webdriver

# 初始化瀏覽器驅動
driver = webdriver.Chrome()

# 這裡是你的瀏覽魔法... 🧙‍♂️

# 結束瀏覽器工作
driver.quit()

方法 quit() 關閉所有的瀏覽器窗口並結束它的工作。如果你忘記調用它,會發生一些怪異的事情,比如背景中開著的瀏覽器,以及不明內存泄漏問題。大家都希望過一個愉快的日子,不是嗎?

解決卡住的瀏覽器進程問題

有時候,在使用 Selenium 後瀏覽器的進程仍然會在背景裡運行,就像即將選擇方向的即時戰略遊戲中的猶豫單位一樣。這可能發生在你的腳本中途關閉的時候。一個解決這個問題的方法是使用批量結束進程,比如用 Python 的 psutil 或其他系統指令。

Python

import psutil

# 關閉所有卡住的 Chrome 進程
for proc in psutil.process_iter():
    # 檢查進程是否屬於瀏覽器
    if 'chrome' in proc.name().lower():
        proc.kill()

這不是最優雅的方式,但如果進程變得難以管理,有時別無選擇。記住,這樣做會關閉所有的瀏覽器進程,所以要理智地使用這個方法。

2. 測試腳本

檢查腳本中每一步的正確性

成功結束腳本只是故事的一半。重要的是要驗證每一步是否正確執行。為此,像 軟體測試工具, 比如 unittestpytest 很適合。你可以寫測試來確認你的腳本正常打開頁面,點擊按鈕,並收集數據。

讓我們來看一個使用 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()

這個測試確認了我們的腳本打開了頁面 https://example.com ,並且頁面標題符合預期。這是一個簡單但強大的方式來確保腳本的關鍵部件正確工作。

調試與優化

有時候,即使是寫了測試後,你的腳本也可能像一個任性的孩子一樣,拒絕正確運行。這時候,就輪到調試上場了。使用 print() 來輸出中間的值,以便跟蹤到底是哪裡出了問題。在代碼中插入有趣的註釋是受歡迎的,但還是要記住目標:弄清楚事情的來龍去脈。

比如,當你遇到問題發現 some_element 在頁面上不存在時:

Python

try:
    some_element = driver.find_element_by_id('missing-id')
except Exception as e:
    print(f"Whoops! 發生了些問題: {e}")

此外,要密切注意腳本的性能。為優化工作,有時可以採用不同的策略,比如減少請求的頻率或優化查找元素的邏輯。

防止未來的故障和錯誤

優化和調試後,你的腳本應該要像瑞士鐘錶一樣完美運作,但仍然可能出現新的問題。你可以使用像 logging 這樣的日誌系統來記錄腳本中發生的事情。這可以幫助了解哪裡以及為什麼出了問題。

Python

import logging

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

logger.info("開始腳本工作")

# log more actions here...

logger.info("結束腳本工作")

記住,工作時要考慮到意外的事件,特別是當你處理不穩定的數據或頁面時。考慮加入重試機制和超時設置,以確保腳本不會因為小的故障而崩潰。

1
問卷/小測驗
表單操作,等級 36,課堂 4
未開放
表單操作
表單操作
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION