[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 啦~
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
3會員
9內容數
Drunk Wis
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Wis Vocus 的其他內容
前言 隨著越來越多公司導入 DevOps 、Agile、Scrum 開發模式,作為基礎設施的 CI / CD Pipeline 也越來越被需要。但是導入的過程中, 總會遇到一些問題: CI / CD Pipeline 該怎麼建 !? Pipeline 工具該怎麼選擇 !? 老天 : 去看書 ! …
某天收到一封來自 Google TW - Test Engineer, Android 的面試邀請,於是開始請HR幫忙安排後續一切事情,首先要先感謝 HR Jenny 很用心、很細心的跟我說明接下來面試的流程,也提供我許多面試相關的參考文件,真的是萬般感謝,讓我感到備受尊重。當然! 面試不外乎還是要
什麼是Pytest? Pytest是一款強大的Python測試工具,支援平行化測試,使用上簡單方便,適合用在各種不同類型的軟體架構,也適用於RD、QA或獨立測試小組,也適合正要導入TDD的公司。 來寫測試吧! 先用pip安裝pytest: libs\module.py 參考資料:
Software QA Engineer 成長紀錄與面試經驗分享 個人背景 面試經驗 1. 一動數據 Quadas - Sr. Software Engineer (Automation Test) 結果: 感謝函 結果: 婉拒 3. 紅點子科技 Voice Tube - 自動化軟體測試工程師
前言 隨著越來越多公司導入 DevOps 、Agile、Scrum 開發模式,作為基礎設施的 CI / CD Pipeline 也越來越被需要。但是導入的過程中, 總會遇到一些問題: CI / CD Pipeline 該怎麼建 !? Pipeline 工具該怎麼選擇 !? 老天 : 去看書 ! …
某天收到一封來自 Google TW - Test Engineer, Android 的面試邀請,於是開始請HR幫忙安排後續一切事情,首先要先感謝 HR Jenny 很用心、很細心的跟我說明接下來面試的流程,也提供我許多面試相關的參考文件,真的是萬般感謝,讓我感到備受尊重。當然! 面試不外乎還是要
什麼是Pytest? Pytest是一款強大的Python測試工具,支援平行化測試,使用上簡單方便,適合用在各種不同類型的軟體架構,也適用於RD、QA或獨立測試小組,也適合正要導入TDD的公司。 來寫測試吧! 先用pip安裝pytest: libs\module.py 參考資料:
Software QA Engineer 成長紀錄與面試經驗分享 個人背景 面試經驗 1. 一動數據 Quadas - Sr. Software Engineer (Automation Test) 結果: 感謝函 結果: 婉拒 3. 紅點子科技 Voice Tube - 自動化軟體測試工程師
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
想要使用python學習程式應該要怎麼開始呢? 首先就是要下載Python(程式語言)還有Pychar(整合開發環境,IDE)這兩個軟體。 在Google的搜尋欄位打上Python下載, 點選第一個Download Python。 第二步點選Download,選擇你的電腦系統。
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
Selenium 是一個範圍廣泛的工具和函式庫的總稱專案,用於啟用和支援網頁瀏覽器的自動化。Selenium WebDriver 提供了 C#、JavaScript、Java、Python、Ruby 等多種語言的 API,可以用於編寫自動化測試軟體。 在定位元素時,WebDriver 提供對這 8
想要開始Python語言的開發環境,有兩種常見方式,一種是下載安裝到本機端,另一種是直接在雲端執行。本文將介紹三個常見的開發工具及其安裝步驟。
Thumbnail
搜尋.......支援的driver: apt search nvidia-drive 最新支援到545,我們來裝545好了(通常我會選擇前一版,我也建議選前一版,像是python12 我們就選python11) sudo apt install nvidia-driver-545 sudo
下載: https://chromedriver.com/download#stable 選擇對應版本下載 如果不能執行就檢查一下權限,賦予執行的權力 例如: chmod +x /usr/local/bin/chromedriver (位置請自行變更)
sudo apt-get --only-upgrade install google-chrome-stable
Get and Install: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb
Thumbnail
這篇文章介紹了十五個超讚的Chrome擴充工具,從知識管理、工作效率提升、安全管理、語言學習、設計師工具到開發者工具,讓你的瀏覽體驗提升好多層次。一起挑戰極限,揭開Chrome的神祕面紗,讓生活更加美好燦爛吧!
Thumbnail
解決 setuptools 的問題: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. 解決方法 目前
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
想要使用python學習程式應該要怎麼開始呢? 首先就是要下載Python(程式語言)還有Pychar(整合開發環境,IDE)這兩個軟體。 在Google的搜尋欄位打上Python下載, 點選第一個Download Python。 第二步點選Download,選擇你的電腦系統。
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
Selenium 是一個範圍廣泛的工具和函式庫的總稱專案,用於啟用和支援網頁瀏覽器的自動化。Selenium WebDriver 提供了 C#、JavaScript、Java、Python、Ruby 等多種語言的 API,可以用於編寫自動化測試軟體。 在定位元素時,WebDriver 提供對這 8
想要開始Python語言的開發環境,有兩種常見方式,一種是下載安裝到本機端,另一種是直接在雲端執行。本文將介紹三個常見的開發工具及其安裝步驟。
Thumbnail
搜尋.......支援的driver: apt search nvidia-drive 最新支援到545,我們來裝545好了(通常我會選擇前一版,我也建議選前一版,像是python12 我們就選python11) sudo apt install nvidia-driver-545 sudo
下載: https://chromedriver.com/download#stable 選擇對應版本下載 如果不能執行就檢查一下權限,賦予執行的權力 例如: chmod +x /usr/local/bin/chromedriver (位置請自行變更)
sudo apt-get --only-upgrade install google-chrome-stable
Get and Install: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb
Thumbnail
這篇文章介紹了十五個超讚的Chrome擴充工具,從知識管理、工作效率提升、安全管理、語言學習、設計師工具到開發者工具,讓你的瀏覽體驗提升好多層次。一起挑戰極限,揭開Chrome的神祕面紗,讓生活更加美好燦爛吧!
Thumbnail
解決 setuptools 的問題: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. 解決方法 目前