【Selenium】Selenium Managerの紹介【ドライバのインストール手順は不要!】

Selenium Managerの解説ページアイキャッチ

このページにはプロモーションが含まれています

このページでは、Selenium を構成するツールの1つである Selenium Manager について解説していきます!

Selenium とはウェブブラウザの操作を自動化するフレームワークです。Selenium を利用することでウェブスクレイピングやウェブアプリの動作確認を簡単に自動化することができます。

Seleniumの説明図

この Selenium を利用するためには、操作対象となるウェブブラウザだけでなく、そのウェブブラウザに対応するドライバをインストールしておく必要があります。そして、この対応するドライバのインストールを行なってくれるのが Selenium Manager となります。

この Selenium Manager の詳細について、ここから説明していきたいと思います!

ちなみに、このページではソースコード等は Python で Selenium を利用することを前提としたものを示していきます。が、このページで解説する内容自体は他のプログラミング言語にも共通して言えることになりますので、他のプログラミング言語を使用している方も是非読み進めていただければと思います。

Selenium Manager:ドライバのインストールツール

Selenium Manager とは、Selenium 4.6 から導入されているドライバのインストールツールになります。最新の Selenium をインストールすれば、Selenium Manager も一緒についてきます。

Selenium は、操作対象となるウェブブラウザをドライバを介して制御するライブラリとなります。そのため、Selenium を利用するためには操作対象となるウェブブラウザだけでなく、そのウェブブラウザのドライバを用意しておく必要がありました。

Seleniumの利用にドライバが必要であることを示す図

このドライバを自動でインストールするツールが Selenium Manager となります。そして、この Selenium ManagerSelenium 利用時に自動的に実行されるツールとなります。

Selenium Managerの説明図

したがって、今まではドライバを別途ユーザーがダウンロードして準備したり、インストールするための処理を別のライブラリを利用して実現する必要がありましたが、実は、これらは既に Selenium を利用する上で不要な手順となっています。

ドライバのインストール手順が不要になったことを示す図

この Selenium Manager の一番素晴らしい点は、操作対象となるウェブブラウザのバージョンも考慮してドライバをインストールしてくれるところになります。

Selenium を利用する際、ドライバはウェブブラウザのバージョンに合わせたものを用意しておく必要がありました。そのため、ウェブブラウザのバージョンが上がると、それに追随させる形でドライバの更新(インストール)が必要となっていました。頻繁にバージョンアップが行われるウェブブラウザも存在するため、このドライバの更新が非常に面倒でした…。

ですが、Selenium Manager は操作対象のウェブブラウザのバージョンも考慮してドライバのインストールを行なってくれますので、この面倒な作業も不要になったことになります。また、Selenium が利用するドライバも Selenium Manager が自動的に設定してくれるため、ドライバのパスの指定についても不要になっています。

ウェブブラウザの更新に伴って、Selenium実行時にSelenium Managerがドライバのインストールを行なってくれる様子

つまり、Selenium Manager が導入されたことで、Selenium 利用時の下記の手順は不要になったことになります。

  • ドライバのインストール
  • ドライバの更新
  • ドライバのパスの指定

新しい Selenium の使い方

Selenium Manager が自動的にドライバをインストールしてくれるようになったため、Selenium Manager 導入前後で Selenium を利用する際に必要な準備やソースコードの書き方も異なります

スポンサーリンク

ドライバのインストール手順は不要

まず、Selenium Manager が自動的にドライバをインストールしてくれるため、Selenium を利用する際のドライバのインストール手順の実施は不要になりました。

例えば Chrome の操作を Selenium から実施する際には、従来であれば、Chromedriver のサイトからドライバをインストールする手順や、webdriver manager を利用して Selenium 実行時にドライバをインストールする処理の実装が必要でした。

ですが、Selenium Manager が導入された今となっては、これらの手順は不要となります。

つまり、プログラミング環境(例えば Python を実装・実行する環境)やウェブブラウザが既に用意されているのであれば、Selenium でウェブブラウザを操作するために必要な準備は Selenium のインストールのみとなります。ドライバのインストール手順は不要です。

ドライバのパスの指定は不要

また、Selenium Manager の導入により、Selenium は利用するドライバとして、Selenium Manager がインストールしたドライバが自動的に設定されるようになっています。

基本的にはドライバのパスは指定しない

従来であれば、Selenium を利用する際にはドライバのパスを指定する必要もありましたが、Selenium Manager が導入されたため、このドライバのパスの指定も不要となりました。

例えば、Python では Selenium を利用する際のソースコードは下記のようになります(操作対象となるウェブブラウザは Chrome になっています)。ポイントは executable_path の指定は不要である点です。Python の場合、executable_path はドライバのパスを指定する引数となります。

新しいSeleniumの使い方
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()

# 必要に応じてoptionsを設定

driver = webdriver.Chrome(options=options)

# driverからウェブブラウザの操作を実行

driver.quit()

従来との使い方の比較

従来であれば、例えば下記のように executable_path を指定して Selenium から使用するドライバのファイルのパスを指定する必要がありました。

従来のSeleniumの使い方
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

driver_path = 'ドライバのインストール先のパス'
options = Options()

# 必要に応じてoptionsを設定

driver = webdriver.Chrome(executable_path=driver_path, options=options)

# driverからウェブブラウザーの操作を実行

driver.quit()

ですが、このドライバのパスの指定はもう不要です。なぜなら、前述の通り、Selenium Manager がウェブブラウザに対応する適切なドライバを自動的にインストールし、そのドライバを利用するように Selenium から自動的に設定されるようになったからです。

Python の場合は executable_path がドライバのパスを指定する引数となりますが、他のプログラミング言語の場合はドライバのパスの指定方法は異なるはずです。ですが、いずれにしても、従来はドライバのパスが指定必要だったものが、Selenium Manager の導入によりドライバのパスの指定は不要になっているはずです。

指定すると DeprecationWarning が発生

むしろ、Python の場合は、executable_path を指定すると下記のような警告が出力されることになっています。

DeprecationWarning: executable_path has been deprecated, please pass in a Service object

この Deprecate とは「廃止する」の意味合いの単語です。つまり、この警告は、executable_path 引数は今後廃止されるため、executable_path 引数の指定は非推奨であることを示すものとなります。

MEMO

Deprecate や Deprecation・Deprecated という単語はプログラミングやソフトウェア開発をしていると目にする機会の多い単語となります

品詞は異なるものの、いずれも「廃止予定だから利用することが非推奨 or 既に廃止済み」であることを示す単語になります

この機会に、是非これらの単語についても覚えておいてください!

実は、Selenium の使い方を解説しているサイトやウェブページは多く存在しますが、まだまだ executable_path 等のドライバのパスを指定する Selenium の使い方を紹介されていたり、ドライバのインストール手順を示されているものも多いです。古いバージョンの Selenium の場合は正しい使い方となるのですが、新しいバージョンの Selenium を利用する場合は executable_path の指定は不要、むしろ、今後廃止される予定の引数なので executable_path の指定はしない方が良いことになります。

どうしてもドライバのパスの指定が必要な場合

ということで、基本的にはドライバのパスは指定しないようにしましょう!というのが結論となります。

ただ、どうしてもドライバのパスを指定しなければならない場合もあると思いますので、その場合はドライバのパスを指定して Selenium を利用してやっても良いです。

例えば Selenium Manager がうまく動作してくれないような場合やネットワークに接続されていない環境で Selenium を利用したいような場合などは、ドライバのパスを指定して Selenium を利用する必要があります。

ちなみに、Python の場合は下記のように Service オブジェクトを利用してやれば警告を出すことなく executable_path でドライバのパスを指定することは可能です。ですが、だからと言ってドライバのパスを指定することを推奨するわけではありません。ドライバのパスを指定するとドライバを更新した際にスクリプトの変更も必要となる可能性があるため、極力ドライバのパスは指定せず、Selenium から自動で設定されるようにした方が良いです。

serviceの利用
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

driver_path = 'ドライバのインストール先のパス'

options = Options()

# 必要に応じてoptionsを設定

service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service, options=options)

# driverからウェブブラウザーの操作を実行

driver.quit()

Selenium Manager の仕組み

Selenium Manager がどのようにして機能するのかについても簡単に説明しておきます。

ここはマニアックな話になりますし、MacOSX 固有の話も多いです。興味がなければ、次の Selenium Manager に関する注意点 スキップしてもらっても良いです。

まず、Selenium Manager はドライバのインスタンス生成時に実行されるツールとなります。例えば、Python から Chrome を操作する場合は、webdriver.Chrome のコンストラクタの中で実行されることになります。

この実行される Selenium ManagerSelenium のインストール時に同時にインストールされ、私の環境の場合は下記のディレクトリ内に実行可能ファイルが設置されるようになっていました(私の環境:OS は MacOSX・Python のバージョンは 3.8)。

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/common/macos/selenium-manager

また、Selenium Manager が実行された際には現在のウェブブラウザに対応したドライバが既にインストール済みであるかどうかが確認され、未インストールの場合はウェブ上からドライバがダウンロードされてインストールされることになります。

例えば、私の環境では、下記のパスにドライバがインストールされることを確認しています。

/Users/ユーザー名/.cache/selenium/chromedriver/mac64/113.0.5672.63/chromedriver

113.0.5672.63 の部分は恐らくブラウザのバージョンに対応しており、ブラウザのバージョンが更新されれば、次に Selenium Manager が実行された際に新たなバージョンのドライバがインストールされるようになっているようです。

そして、インストールされたドライバのパスが自動的に Selenium に設定され、このドライバを利用してウェブブラウザの操作が実現されるようになっているようです。

私の使用している環境に基づいた情報になってしまいますが、必要に応じて Selenium Manager やドライバが存在する位置を推測していただければと思います。

スポンサーリンク

Selenium Manager に関する注意点

最後に、Selenium Manager に関する注意点を述べておきます。この注意点は現時点(2023/5/14)のものになります。

Selenium ManagerSelenium 4.6 から対応

まず、Selenium ManagerSelenium 4.6 から導入されたツールとなります。したがって、Selenium 4.5 以前のバージョンを利用している場合は、ドライバのインストール手順が別途必要となりますし、Selenium を利用する際はドライバのパスを指定する必要があります。

対応しているのは一部のウェブブラウザのみ

また、Selenium Manager が対応しているのは一部のウェブブラウザのみとなります。

対応しているウェブブラウザは下記のみとなります。未対応のウェブブラウザに対して Selenium を利用したい場合、従来の通り、別途ドライバのインストール手順およびドライバのパスの指定が必要になるはずです。

  • Chrome
  • Edge
  • FireFox

一応ソースコード的には Internet Explorer も対応しているように見えましたが、このブラウザ自体の利用が非推奨となっているので、ここでは省略しています。

また、Safari に関しては Safari 側でドライバを用意してくれるようになっているため、ドライバのインストールは不要となるようです。ドライバのパスも指定しなくて良いはず。少なくとも MacOSX 環境で Python から Selenium を利用する場合はドライバのパスは指定不要でした。

スポンサーリンク

利用時にはネットに接続している必要あり

また、Selenium Manager がドライバをインストールする際にはドライバのダウンロードが行われるようです。そのため、Selenium Manager を利用する際には、PC がネットワークに接続されている必要があります。

ネットワークに接続していない状態で Selenium Manager がインストールを行おうとした場合、下記のようなエラーが発生することになります(Python で Chrome のドライバをインストールしようとした場合の例になります)。

Unable to obtain driver using Selenium Manager: Selenium Manager failed for: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/common/macos/selenium-manager --browser chrome --output json.
error sending request for url (https://chromedriver.storage.googleapis.com/LATEST_RELEASE_113): error trying to connect: dns error: failed to lookup address information: nodename nor servname provided, or not known

したがって、ネットワークが利用できない環境で Selenium を利用する場合は注意が必要となります。

例えば移動中などでネットワークが利用できない環境で Selenium を利用するのであれば、移動前に Selenium を利用したプログラムを実行しておいて事前にドライバの更新を行なっておくことをオススメします。前述の通り、Selenium Manager が導入されていれば、Selenium を利用する際に自動的に最新のドライバのインストールが行われ、それ以降ウェブブラウザが更新されない限りはドライバのインストールも不要となります。 

まとめ

このページでは、Selenium を構成するツールの1つである Selenium Manager について解説しました!

この Selenium Manager が導入されたことで面倒なドライバのインストール手順が不要となり、ドライバのパスの指定も不要となります。これによって、Selenium を利用するにあたって必要となる面倒な手順が減ったことになります。素晴らしいですね!

自分自身、Selenium を利用し始めたのは最近なのですが、使っているうちにドライバのパスの指定が不要であることに気づき、その理由を調べているうちに Selenium Manager の存在を知ることになりました。ネット上にもあまり情報が無かったので、この Selenium Manager の存在を知らない方も多いのではないかと思い、せっかくなので記事として公開してみました!

こういった豆知識も提供していきたいと思っていますので、興味があれば、また私のサイトに訪れてみていただけると幸いです!

同じカテゴリのページ一覧を表示

1 COMMENT

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です