[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內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Wis Chang的沙龍 的其他內容
前言 隨著越來越多公司導入 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
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
Thumbnail
在我們正式開始Python串接LINE Bot的教程之前,有必要先為大家準備好所需的工具。實際上,製作LINE Bot的工具有很多選擇,我將會介紹我在製作過程中所使用的具體工具有哪些,以及如何進行事前的準備工作。讓我們一起走進這個有趣的製作過程吧!
Thumbnail
每當要研究投資標的時,你是否也會覺得A網站的財報資料完整,又覺得B網站的選股條件完善,又覺得C網站的新聞比較重要,有時身邊又沒有隨身攜帶筆電怎麼好查詢呢?這時可能就在想怎麼沒有人開發一個程式能完成符合我想要的功能啊~~與其求助於人,不如自己動手做最好,有相同煩惱的人,LINE Bot超適合你!!
Thumbnail
在看官網文件時,看到一份文件:PEP 8 -- Style Guide for Python Code。這份文件是關於Python程式碼風格的指引和建議。
Thumbnail
我希望透過在好學校開設「Python 的 50+ 練習:資料科學學習手冊」,讓學生一步步完成這門課程所有的觀念講解、範例實作以及練習之後,扎實地將 Python 程式設計與資料科學應用納入自己的技能組,成為一位擅長寫程式處理資料的分析師,大幅提升工作掌握度與職涯發展性!
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
Thumbnail
在我們正式開始Python串接LINE Bot的教程之前,有必要先為大家準備好所需的工具。實際上,製作LINE Bot的工具有很多選擇,我將會介紹我在製作過程中所使用的具體工具有哪些,以及如何進行事前的準備工作。讓我們一起走進這個有趣的製作過程吧!
Thumbnail
每當要研究投資標的時,你是否也會覺得A網站的財報資料完整,又覺得B網站的選股條件完善,又覺得C網站的新聞比較重要,有時身邊又沒有隨身攜帶筆電怎麼好查詢呢?這時可能就在想怎麼沒有人開發一個程式能完成符合我想要的功能啊~~與其求助於人,不如自己動手做最好,有相同煩惱的人,LINE Bot超適合你!!
Thumbnail
在看官網文件時,看到一份文件:PEP 8 -- Style Guide for Python Code。這份文件是關於Python程式碼風格的指引和建議。
Thumbnail
我希望透過在好學校開設「Python 的 50+ 練習:資料科學學習手冊」,讓學生一步步完成這門課程所有的觀念講解、範例實作以及練習之後,扎實地將 Python 程式設計與資料科學應用納入自己的技能組,成為一位擅長寫程式處理資料的分析師,大幅提升工作掌握度與職涯發展性!