Selenium Manager の 2023 年 10 月の状況

このブログ記事では、Selenium Manager の最新 2 バージョン (0.4.13 および 0.4.14) で導入された新機能をまとめています。

Selenium Manager は開発計画を継続しています。通常どおり、最新リリースである 0.4.13 および 0.4.14 (それぞれ Selenium 4.13 および 4.14 に同梱) では、これまで報告された問題を修正しました。これらのリリースでは、問題は Windows の自己解凍アーカイブ (SFX) からの Firefox バイナリの抽出、および構成ファイル (se-config.toml) と環境変数 (例: SE_BROWSER) を介した詳細構成に関連していました。さらに、これらの最近のリリースには、以下で説明するように、新機能が含まれています。

キャッシュ内で最適なドライバーを検索する

デフォルトでは、Selenium Manager は、Selenium が必要とする適切なドライバーとブラウザーを検出、ダウンロード、および維持するために、オンラインエンドポイント (たとえば、Chrome for Testing JSON APIFirefox product-details JSON API など) にリクエストを送信する必要があります。ダウンロードされたアーティファクトはキャッシュ (デフォルトでは ~/.cache/selenium) に保存され、そこから再利用されます。

ドライバーの解決手順をより堅牢にするために、バージョン 0.4.13 以降、Selenium Manager には、エラーが発生した場合にキャッシュ内のドライバーを特定する新機能が含まれています。これにより、Selenium Manager でネットワークリクエスト (またはその他の機能) が失敗した場合、キャッシュ内のドライバーの特定を試みます。この機能は、Selenium Manager の最終目標である Selenium セッションを適切に作成するための最善のソリューションを提供することを目的としています。また、この機能は、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 (2 番目のスニペット) でのこの機能を示しています。

./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 の投稿 を参照してください)。結局のところ、見つかった唯一の解決策は、MSI インストーラーを使用して Windows に 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 は、Windows、Linux、および macOS 用の zip ファイルとして配布されるポータブルバイナリとしてリリースされています (Chromium ダウンロードページ を参照)。それにもかかわらず、Chromium が実際にシステムにインストールされているケースがあります。これは、たとえば、次のように atpsnap などのパッケージマネージャーを介して Chromium をインストールする場合に、Linux システムで発生します。

sudo snap install chromium

したがって、0.4.14 以降、Selenium Manager は Chrome が検出されない場合に PATH 内の Chromium バイナリを探します。次のスニペットは、Chrome が利用できないが、Chromium が snap を介してインストールされている Linux マシンでこの機能がどのように機能するかを示しています。

./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 プロジェクトダッシュボード で追跡できます。