[Python][Selenium] Chrome Browser 與 Driver 惱人的版本管理

閱讀時間約 7 分鐘
最近手邊事情告了一個段落,剛好有空就來記錄一下 2019 寫過的小工具,Selenium 這套 Web Testing Framework 算是在軟體業界自動化測試很有名的一套網頁自動化測試、爬蟲框架,但用了幾年後…總覺得需要不斷的去維護瀏覽器版本與 Driver 版本…好麻煩~一直在思考著怎麼做比較可以一勞永逸。
畢竟~我是一個懶人嘛...
如果隨便把 Selenium WebDriver 關鍵字拿去餵狗,你可以查到各種爆炸多的教學文章教你怎麼讓 Selenium 跑起來,但…始終找不到有關版本管理的方法,這件事情真的讓我們的測試環境不斷的出現問題 (尤其 Windows),常常因為測試時間太長 Google Chrome 自己跑去更新 (也許測試時間太長才是問題...XD),我們困擾許久…
估狗之後,大部分的做法就是手動的去下載當前瀏覽器對應版本的 Driver,放到一個特定位置,將 Driver Binary 位置指向它。
在 Google Chrome About Page 你可以看到版本
接著去下載對應的 Chrome Driver ↓
但,這件事就真的是非常麻煩 RRRRRRR
測試環境一但更新,運氣好可能還有機會可以運行,
運氣不好就是全部測試炸光光…

解決方案:

  1. 將 Google Chrome 更新關掉,讓測試環境瀏覽器固定在某個特定版本
  2. 用 Windows PowerShell 軟體管理工具 Chocolate 完成
  3. 自幹一個 Python Chrome Driver Helper 在 Windows 底下運作,自動偵測當前的版本並且下載當前對應的 Driver
方案1. 是一種硬幹的方式,比較不推薦的,畢竟如果有一天需要測試新版的瀏覽器的話,還是一樣會遇到問題 QAQ
方案2. 首先你的環境要先安裝 Chocolate,這種方式也許是可以達成,但看似還是要自己多寫一個 Script 去偵測當前瀏覽器版本… ( 如果你覺得這個比較好用的話再將你的心得分享給小弟…XD )
可以到這裡下載 ↓
# 你可以暴力一點下再全部 Driver
choco install selenium-all-drivers
# 或是
# 特定的 Chrome Driver
choco install selenium-chrome-driver
方案3. 這是最後與我們團隊討論後,選擇使用的方式 --- 自幹
Python Chrome Driver Helper
目標:
  1. 取得當前環境的 Chrome Browser Version
  2. 想辦法查到對應版本
  3. 下載對應版本的 Driver 並放到指定位置
Environment Requirements:
Windows
1. Python 3+
2. Google Chrome
Python Packages
pip install pypiwin32
pip install requests
Folder Structure
--- chrome_helper.py
file_util.py
第1步,創建一個 file_util.py
利用 Python Win32 API module 取得 chrome.exe 版號。
get_file_version() --- 取得版本號
write_json() --- 寫 json file
read_json() --- 讀 json file
第2步,找到一個可以查詢版本的方法,透過 query API 完成
Latest Version API
https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{version}
Download Chrome Driver API
https://chromedriver.storage.googleapis.com/{version}/chromedriver_win32.zip
例如環境的 Chrome 版本為 79.0.3945.88,只要將 {version} = 79 帶入主版本號 即可完成查詢與下載。
chrome_helper.py
有了這個 chrome_helper.py 後,只要在測試最一開始的環境檢查或是 Setup 的部分呼叫 check_browser_driver_available() 即可。
之後會產生三個檔案,在 C:\temp\chrome 底下:
chromedriver.exe
chromedriver_win32.zip
mapping.json
mapping.json 用來控制 Browser 與 Driver 的對應:
{
"79": {
"driver_path": "C:\\temp\\chrome\\chromedriver.exe",
"driver_version": "79.0.3945.36"
}
}
讚讚讚!!!
這樣就可以不用去管目前瀏覽器是什麼版本,需要下載哪一版的 Driver 啦~
為什麼會看到廣告
1會員
9內容數
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
avatar
JoeC
2024-06-13
[Python]OS檔案操作在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
Thumbnail
avatar
螃蟹_crab
2024-06-08
[Python]解讀JSON解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
avatar
螃蟹_crab
2024-06-08
avatar
JoeC
2024-06-07
【筆記】Selenium with Python 環境配置Selenium with Python的環境配置筆記
Thumbnail
avatar
冬霞
2023-07-19
Python+LINE Bot 輕鬆打造股市機器人(二) : 所需準備的工具在我們正式開始Python串接LINE Bot的教程之前,有必要先為大家準備好所需的工具。實際上,製作LINE Bot的工具有很多選擇,我將會介紹我在製作過程中所使用的具體工具有哪些,以及如何進行事前的準備工作。讓我們一起走進這個有趣的製作過程吧!
Thumbnail
avatar
陳陳
2022-02-12
Python+LINE Bot 輕鬆打造股市機器人(一): 介紹我的LINE Bot每當要研究投資標的時,你是否也會覺得A網站的財報資料完整,又覺得B網站的選股條件完善,又覺得C網站的新聞比較重要,有時身邊又沒有隨身攜帶筆電怎麼好查詢呢?這時可能就在想怎麼沒有人開發一個程式能完成符合我想要的功能啊~~與其求助於人,不如自己動手做最好,有相同煩惱的人,LINE Bot超適合你!!
Thumbnail
avatar
陳陳
2022-02-05
Python程式碼的風格在看官網文件時,看到一份文件:PEP 8 -- Style Guide for Python Code。這份文件是關於Python程式碼風格的指引和建議。
Thumbnail
avatar
ysf
2021-12-25
Python 的 50+ 練習:資料科學學習手冊我希望透過在好學校開設「Python 的 50+ 練習:資料科學學習手冊」,讓學生一步步完成這門課程所有的觀念講解、範例實作以及練習之後,扎實地將 Python 程式設計與資料科學應用納入自己的技能組,成為一位擅長寫程式處理資料的分析師,大幅提升工作掌握度與職涯發展性!
Thumbnail
avatar
郭耀仁
2021-12-23
python 邊緣與輪廓檢測邊緣與輪廓檢測 edge detection
Thumbnail
avatar
薰魚
2021-09-24