Python自動化工具 – Selenium 機器人般的瀏覽器

Python_Selenium_featured_image

前言:

舉凡自動化軟體測試、重複性的辦公室工作、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所指到的路徑,都能讀的到。

放在系統變數path指到的路徑都能用

如上圖橘色框框,可以在命令提示字元或是Anaconda內虛擬環境所啟動的終端機裡面輸入 path  並按下Enter

可以看到系統回報出許多路徑在下方,可以把Webdrive的exe執行檔案,拷貝到虛擬環境的路徑下,如上圖綠框處。

這樣,Webdriver就安裝好了。

2. 安裝Selenium

只要在終端機裡面輸入

pip install 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秒,最後捲動了頁面到最底下。

順利完成!!

Selenium自動開啟了Chrome瀏覽器

結論:

透過Python 加上Selenium,可以做出各種模擬瀏覽器的行為,也可以自動化操作、甚至抓取資料。本文帶大家安裝好Selenium所需要的軟體,透過後面的程式碼,也能快速知道它運作的方式。若有需要可以自己Google更多的selenium API呼叫方式,也能達到更多的功能。未來有機會再跟大家分享如何結合其他自動化套件,做出更多變化。

以上教學是不是很簡單呢?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *