2023 年 10 月 Selenium Manager 狀態
分類
Selenium Manager 持續其開發計畫。如同往常,在最新的版本(即 0.4.13 和 0.4.14,分別與 Selenium 4.13 和 4.14 一起發布)中,我們修正了目前回報的問題。在這些版本中,問題與從 Windows 中的自解壓縮封存檔 (SFX) 提取 Firefox 二進位檔,以及透過組態檔 (se-config.toml) 和環境變數 (例如 SE_BROWSER) 進行進階組態有關。此外,這些最新版本包含新功能,如下所述。
在快取中搜尋最佳的驅動程式
預設情況下,Selenium Manager 需要請求線上端點(例如 Chrome for Testing JSON API 或 Firefox product-details JSON API)以探索、下載和維護 Selenium 所需的正確驅動程式和瀏覽器。下載的成品會儲存在快取中(預設為 ~/.cache/selenium),並從那裡重複使用。
為了使驅動程式解析程序更加穩健,從 0.4.13 版本開始,Selenium Manager 包含一項新功能,可在發生某些錯誤時在快取中定位驅動程式。這樣一來,當 Selenium Manager 中的網路請求(或其他功能)失敗時,它會嘗試在快取中定位驅動程式。此特性旨在為正確建立 Selenium 會話提供盡力而為的解決方案,這也是 Selenium Manager 的最終目標。此外,此功能將有助於為 Selenium Grid 定位驅動程式提供更好的體驗。
使用環境變數定位 Selenium Manager 二進位檔
與 Selenium Manager 0.4.13 相關的下一個功能已在 Selenium 綁定(即 Java、JavaScript、Python、.Net 和 Ruby)中實作。從 Selenium 4.13.0 開始,Selenium 綁定允許使用名為 SE_MANAGER_PATH 的環境變數來定位 Selenium Manager 二進位檔。這樣一來,如果設定了此變數,綁定將使用其值作為本機檔案系統中的 Selenium Manager 路徑。此功能將允許使用者提供 Selenium Manager 的自訂編譯版本,例如,如果預設二進位檔(針對 Windows、Linux 和 macOS 編譯)與給定的系統(例如 Linux 中的 ARM64)不相容。
自動化 Edge 管理
Selenium Manager 0.4.14 包含自動化的 Edge 管理。在 Chrome 和 Firefox 之後,此瀏覽器是我們為此功能考慮的最後一個。
此功能的實作方式與 macOS 和 Linux 的 Chrome 和 Firefox 相同。換句話說,Selenium Manager 允許自動管理(即探索、下載和快取)最新的 Edge 版本(即 stable、beta、dev、canary)和舊版本(例如 115、116 等)。下載的二進位檔照例儲存在 Selenium 快取中。以下輸出命令展示了此功能在 macOS(第一個程式碼片段)和 Linux(第二個程式碼片段)中的運作方式
./selenium-manager --browser edge --debug --force-browser-download
DEBUG msedgedriver not found in PATH
DEBUG Checking edge releases on https://edgeupdates.microsoft.com/api/products
DEBUG Required browser: edge 117.0.2045.40
DEBUG Downloading edge 117.0.2045.40 from https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/6e65d9ef-0bb9-4636-8d9e-2b1b9d16149d/MicrosoftEdge-117.0.2045.40.pkg
DEBUG edge 117.0.2045.40 has been downloaded at /Users/boni/.cache/selenium/edge/mac64/117.0.2045.40/Microsoft Edge.app/Contents/MacOS/Microsoft Edge
DEBUG Reading msedgedriver version from https://msedgedriver.azureedge.net/LATEST_RELEASE_117_MACOS
DEBUG Required driver: msedgedriver 117.0.2045.40
DEBUG Downloading msedgedriver 117.0.2045.40 from https://msedgedriver.azureedge.net/117.0.2045.40/edgedriver_mac64.zip
INFO Driver path: /Users/boni/.cache/selenium/msedgedriver/mac64/117.0.2045.40/msedgedriver
INFO Browser path: /Users/boni/.cache/selenium/edge/mac64/117.0.2045.40/Microsoft Edge.app/Contents/MacOS/Microsoft Edge
./selenium-manager --browser edge --debug --browser-version beta
DEBUG msedgedriver not found in PATH
DEBUG edge not found in PATH
DEBUG edge beta not found in the system
DEBUG Checking edge releases on https://edgeupdates.microsoft.com/api/products
DEBUG Required browser: edge 118.0.2088.11
DEBUG Downloading edge 118.0.2088.11 from https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-beta/microsoft-edge-beta_118.0.2088.11-1_amd64.deb
DEBUG edge 118.0.2088.11 has been downloaded at /home/user/.cache/selenium/edge/linux64/118.0.2088.11/msedge
DEBUG Reading msedgedriver version from https://msedgedriver.azureedge.net/LATEST_RELEASE_118_LINUX
DEBUG Required driver: msedgedriver 118.0.2088.11
DEBUG Downloading msedgedriver 118.0.2088.11 from https://msedgedriver.azureedge.net/118.0.2088.11/edgedriver_linux64.zip
INFO Driver path: /home/user/.cache/selenium/msedgedriver/linux64/118.0.2088.11/msedgedriver
INFO Browser path: /home/user/.cache/selenium/edge/linux64/118.0.2088.11/msedge
然而,此功能無法以類似方式在 Windows 上實作。原因是 Windows 的 Edge 安裝程式以 Microsoft Installer (MSI) 檔案的形式發布,旨在以管理員權限執行。我們嘗試從該 MSI 檔案中提取 Edge 二進位檔。不過,這似乎不可能(請參閱 Stack Overflow 貼文,其中總結了問題)。總而言之,我們找到的唯一解決方案是在 Windows 中使用 MSI 安裝程式安裝 Edge,因此需要管理員授權。
這樣一來,當嘗試在 Windows 中以非管理員會話使用 Selenium Manager 安裝 Edge 時,將顯示如下警告訊息
./selenium-manager --debug --browser edge --browser-version beta
DEBUG msedgedriver not found in PATH
DEBUG edge not found in PATH
DEBUG edge beta not found in the system
WARN There was an error managing edge (edge can only be installed in Windows with administrator permissions); using driver found in the cache
INFO Driver path: C:\Users\boni\.cache\selenium\msedgedriver\win64\118.0.2088.17\msedgedriver.exe
但是,當在 Windows 中以管理員授權執行 Selenium Manager 時,它將能夠自動探索、下載和安裝 Edge(stable、beta、dev、canary 和舊版本)
./selenium-manager --debug --browser edge --browser-version beta
DEBUG msedgedriver not found in PATH
DEBUG edge not found in PATH
DEBUG edge beta not found in the system
DEBUG Checking edge releases on https://edgeupdates.microsoft.com/api/products
DEBUG Required browser: edge 118.0.2088.17
DEBUG Downloading edge 118.0.2088.17 from https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/7adec542-f34c-4dea-8e2a-f8c6fab4d2f3/MicrosoftEdgeBetaEnterpriseX64.msi
DEBUG Installing MicrosoftEdgeBetaEnterpriseX64.msi
DEBUG edge 118.0.2088.17 is available at C:\Program Files (x86)\Microsoft\Edge Beta\Application\msedge.exe
DEBUG Required driver: msedgedriver 118.0.2088.17
DEBUG msedgedriver 118.0.2088.17 already in the cache
INFO Driver path: C:\Users\boni\.cache\selenium\msedgedriver\win64\118.0.2088.17\msedgedriver.exe
INFO Browser path: C:\Program Files (x86)\Microsoft\Edge Beta\Application\msedge.exe
Chromium 支援
Chromium 以可攜式二進位檔形式發布,以 zip 檔案形式分發,適用於 Windows、Linux 和 macOS(請參閱 Chromium 下載頁面)。然而,在某些情況下,Chromium 實際上是安裝在系統中的。當透過套件管理器(例如 atp 或 snap)在 Linux 系統中安裝 Chromium 時,就會發生這種情況,例如,如下所示
sudo snap install chromium
因此,從 0.4.14 開始,當未探索到 Chrome 時,Selenium Manager 會在 PATH 中尋找 Chromium 二進位檔。以下程式碼片段展示了此功能在 Linux 機器中的運作方式,其中 Chrome 不可用,但已透過 snap 安裝 Chromium
./selenium-manager --browser chrome --debug
DEBUG chromedriver not found in PATH
DEBUG Found chromium in PATH: /snap/bin/chromium
DEBUG Running command: /snap/bin/chromium --version
DEBUG Output: "Chromium 117.0.5938.149 snap"
DEBUG Detected browser: chrome 117.0.5938.149
DEBUG Required driver: chromedriver 117.0.5938.149
DEBUG chromedriver 117.0.5938.149 already in the cache
INFO Driver path: /home/user/.cache/selenium/chromedriver/linux64/117.0.5938.149/chromedriver
INFO Browser path: /snap/bin/chromium
下一步
我們即將實作最初為 Selenium Manager 規劃的所有功能。您可以在 Selenium Manager 專案儀表板中追蹤開發活動的狀態。




