前言:
舉凡自動化軟體測試、重複性的辦公室工作、PC線上遊戲的重複練功、網頁爬蟲抓取資料…等等,以上說的這些Selenium都做得到。 我們都知道Python是相當好用與親民的開發語言,若搭配自動化的套件Selenium,可以更有彈性地做出想要的自動化程式。
本文將教大家如何使用Selenium搭配Python,製作各種自動化搶票系統的基本功能。至於完整的自動化搶票系統,之後有機會再跟大家分享。
在開始之前,請確認你已經有Python開發的環境與工具,若你還沒準備好,可以參考這篇,搞定好開發環境再回來。
Python超好用基本開發工具 – Anaconda + Atom Editor with Packages
Selenium是什麼?
Selenium 是為瀏覽器自動化(Browser Automation)需求所設計的一套工具集合,讓程式可以直接驅動瀏覽器進行各種網站操作。
Selenium的歷史來自於2004 年,在芝加哥 ThoughtWorks 公司上班的 Jason Huggins 製作了稱為「JavaScriptTestRunner」的核心模組,可以用在測試上以及外部程式的工具。無論Python或Plone這種CMS系統,都能夠用在自動測試。
Selenium 也能執行「瀏覽器」來進行網站操作的自動化,它能夠直接獲取即時的內容,包括被 JavaScript 修改過的 DOM 內容,讓程式可以直接與網頁元素即時互動、執行 JavaScript 程式,因此也適用於前端採用 AJAX 技術的網站。
Selenium 許多人用在 Web Testing ,利用 Selenium 操作網頁表單資料、自動點選按鈕或連結、取得網頁內容並進行比對與檢驗,可以滿足大部分的測試需求。
Selenium 主要有三大專案分支
- Selenium IDE
- Selenium WebDriver
- Selenium Grid
Python 版的Selenium如何安裝?
要用Python讓自動化的程式運作起來,主要需要兩個部分,可以先想像成 騎士 跟 馬。 騎士透過韁繩來控制馬;Python 匯入 selenium的函式庫(packages)、透過Python code來呼叫Webdriver瀏覽器做事。
A. 馬就是瀏覽器,你可以想像它加上Webdriver後,變成是一套工程版的瀏覽器。
B. 韁繩就是Webdriver,透過API呼叫各種廠牌的瀏覽器做事情,當然不同的瀏覽器要搭配不同的Webdriver。
C. 騎士就是 Python Code,透過您撰寫的程式碼來控制馬,當然你要安裝並匯入對應的Selenium packages。
知道上面的概念後,我們就開始安裝工具吧。
1. 下載Selenium Webdriver
Webdriver有各種瀏覽器版本,除了要對應品牌,還要對應版本號碼。
https://chromedriver.chromium.org/downloads
這邊我們選擇好用的Selenium Chrome Webdriver
看到圖片中高亮黃色的部分嗎? 要選擇跟你瀏覽器同樣版號的Webdriver,到時候Selenium才呼叫得起來。
下載後的webdriver要放在哪? 也是一個眉角,簡單的來說,只要放在系統環境變數 path所指到的路徑,都能讀的到。
如上圖橘色框框,可以在命令提示字元或是Anaconda內虛擬環境所啟動的終端機裡面輸入 path 並按下Enter
可以看到系統回報出許多路徑在下方,可以把Webdrive的exe執行檔案,拷貝到虛擬環境的路徑下,如上圖綠框處。
這樣,Webdriver就安裝好了。
2. 安裝Selenium
只要在終端機裡面輸入
pip install selenium
到這邊就安裝完成了。記得在同一個虛擬環境裡面,輸入ATOM,喚起編輯器。準備來小試一下身手。
若這邊不清楚的,可以回去看這篇
Python超好用基本開發工具 – Anaconda + Atom Editor with Packages
我們開始來試試看吧,程式碼在此,複製貼上到ATOM,另存為.py的檔案,按下F5就自動執行了!
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
targetwebURL = "https://www.figma.com/"
driver = webdriver.Chrome()
#前往這個網址
driver.get(targetwebURL)
from time import sleep
sleep(5)
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
這兩行分別是匯入Selenium的webdriver模組、以及按鍵的模組。
targetwebURL = “https://www.figma.com/”
driver = webdriver.Chrome()
driver.get(targetwebURL)
上面這三行就能喚醒瀏覽器、並且依照指定的路徑自動連入網頁。
from time import sleep
sleep(5)
這邊是匯入time 函式庫,使用了裡面Sleep的功能,import的部分可以放在程式碼最上面,這邊只是示範方便解說。Sleep(5),代表等待5秒
js=”var q=document.documentElement.scrollTop=10000″
driver.execute_script(js)
捲動到頁面最底下10000的位置
在ATOM裡面 按下F5 執行結果如下
Selenium自動開啟了Chrome瀏覽器,並且連線到figma.com的網站,停止5秒,最後捲動了頁面到最底下。
順利完成!!
結論:
透過Python 加上Selenium,可以做出各種模擬瀏覽器的行為,也可以自動化操作、甚至抓取資料。本文帶大家安裝好Selenium所需要的軟體,透過後面的程式碼,也能快速知道它運作的方式。若有需要可以自己Google更多的selenium API呼叫方式,也能達到更多的功能。未來有機會再跟大家分享如何結合其他自動化套件,做出更多變化。
以上教學是不是很簡單呢?