Windows

Windows 使用 Python + Selenium 自動控制瀏覽器教學與範例

介紹如何在 Windows 環境下,使用 Python 的 Selenium 模組,撰寫自動控制瀏覽器的指令稿。

安裝 Python 環境

在開始之前,請先確認自己的 Windows 系統中有安裝 Python 的環境,如果沒有的話,請依照 Windows 安裝 Python 程式開發環境的步驟,在自己的 Windows 系統中安裝好 Python 的程式開發環境。

正常來說在安裝完 Python 的環境之後,也會一併安裝好 pip 這個 Python 套件管理工具,如果自己的 Python 環境沒有附帶 pip 的話,亦可依循安裝 Python 的 pip 套件管理工具的步驟,自己另外安裝。

安裝 Selenium

開啟 Windows 的「命令提示字元」,使用 pip 安裝 Python 的 Selenium 套件:

pip install selenium
安裝 Python 的 Selenium 套件

執行這一行 pip 的指令之後,就會自動從網路上下載並安裝 selenium 套件,所有相依性套件也會自動安裝起來。

下載 WebDriver

Selenium 需要透過特殊的 WebDriver 才能跟瀏覽器溝通,進行各種控制,而不同的瀏覽器所對應的 WebDriver 也不同,以下是各種瀏覽器的 WebDriver 下載點:

瀏覽器 WebDriver
Chrome ChromeDriver
Edge Microsoft WebDriver
Firefox geckodriver
Safari WebDriver Support in Safari 10

請依照想要控制的瀏覽器,下載對應的 WebDriver 程式,同時請注意瀏覽器與 WebDriver 的版本,如果兩者的版本不同,是不能用的。

下載下來的瀏覽器 WebDriver 不需要安裝,但隨後要跟使用 Selenium 的 Python 指令稿(*.py)放在一起執行,下面有詳細的操作教學。

撰寫 Python 指令稿

準備好 Python 環境與 WebDriver 程式之後,就可以開始撰寫 Python 的指令稿,自動操控瀏覽器了,以下是一個 Hello World 範例,其使用 WebDriver 來控制 Chrome 瀏覽器,打開 Google 首頁:

from selenium import webdriver

# 使用 Chrome 的 WebDriver
browser = webdriver.Chrome()

# 開啟 Google 首頁
browser.get('https://www.google.com/')

# 關閉瀏覽器
# browser.close()

將這段 Python 指令稿儲存至 hello.py,然後跟 Chrome 的 WebDriver 程式放在同一個目錄之下,這樣就可以執行了。

Python 指令稿與 WebDriver

執行時可能會出現 Windows 防火牆的警告訊息,請選擇「允許存取」。

Windows 防火牆訊息

執行之後,會開啟一個新的 Chrome 瀏覽器視窗,這個視窗是由 Python 程式所控制的,在網址列下方會有一行受控制的提示訊息。

Chrome 瀏覽器

如果可以正常開啟這樣的 Chrome 瀏覽器視窗,就表示 Selenium 可以正常運作了,接下來就可以利用 Python 進行各種自動化的操作與測試了。

至於 Edge 與 Firefox 等瀏覽器的 WebDriver 使用方式也都大同小異,只要下載之後跟 Python 指令稿放在一起即可使用。

Google 搜尋

Selenium 可以控制瀏覽器進行各種動作,以下是在 Google 搜尋網頁中輸入關鍵字,進行搜尋的範例:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 使用 Chrome 的 WebDriver
browser = webdriver.Chrome()

# 開啟 Google 首頁
browser.get("https://www.google.com")

# 尋找網頁中的搜尋框
inputElement = browser.find_element_by_name("q")

# 在搜尋框中輸入文字
inputElement.send_keys("Selenium")

# 送出搜尋
inputElement.submit()

# Google 搜尋結果的 XPath
resultLocator = "//a/h3/div"

try:
    # 等待網頁搜尋結果
    WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.XPATH, resultLocator)))

    # 取得第一頁搜尋結果
    page1_results = browser.find_elements_by_xpath(resultLocator)

    # 輸出搜尋結果
    for item in page1_results:
        print(item.text)

except TimeoutException:
    print('等待逾時!')
Selenium 控制 Chrome 瀏覽器進行 Google 搜尋

使用既有 Profile

如果要使用 Google Chrome 中既有的 Profile 來進行測試,只要在建立 Chrome 的 WebDriver 時加入一些額外的參數,指定要使用的 Profile 即可:

from selenium import webdriver

# 設定參數
options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=C:UsersOfficeGuideAppDataLocalGoogleChromeUser Data")
options.add_argument("--profile-directory=Profile 1")

# 使用自訂參數的 WebDriver
browser = webdriver.Chrome(options=options)

# ...

參考資料:Selenium with PythonMedium @NorthBei子風的知識庫

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago