このページでは、Selenium
を構成するツールの1つである Selenium Manager
について解説していきます!
Selenium
とはウェブブラウザの操作を自動化するフレームワークです。Selenium
を利用することでウェブスクレイピングやウェブアプリの動作確認を簡単に自動化することができます。
この Selenium
を利用するためには、操作対象となるウェブブラウザだけでなく、そのウェブブラウザに対応するドライバをインストールしておく必要があります。そして、この対応するドライバのインストールを行なってくれるのが Selenium Manager
となります。
この Selenium Manager
の詳細について、ここから説明していきたいと思います!
ちなみに、このページではソースコード等は Python で Selenium
を利用することを前提としたものを示していきます。が、このページで解説する内容自体は他のプログラミング言語にも共通して言えることになりますので、他のプログラミング言語を使用している方も是非読み進めていただければと思います。
Contents
Selenium Manager
:ドライバのインストールツール
Selenium Manager
とは、Selenium 4.6
から導入されているドライバのインストールツールになります。最新の Selenium
をインストールすれば、Selenium Manager
も一緒についてきます。
Selenium
は、操作対象となるウェブブラウザをドライバを介して制御するライブラリとなります。そのため、Selenium
を利用するためには操作対象となるウェブブラウザだけでなく、そのウェブブラウザのドライバを用意しておく必要がありました。
このドライバを自動でインストールするツールが Selenium Manager
となります。そして、この Selenium Manager
は Selenium
利用時に自動的に実行されるツールとなります。
したがって、今まではドライバを別途ユーザーがダウンロードして準備したり、インストールするための処理を別のライブラリを利用して実現する必要がありましたが、実は、これらは既に 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
はドライバのパスを指定する引数となります。
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
から使用するドライバのファイルのパスを指定する必要がありました。
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
引数の指定は非推奨であることを示すものとなります。
Deprecate や Deprecation・Deprecated という単語はプログラミングやソフトウェア開発をしていると目にする機会の多い単語となります
品詞は異なるものの、いずれも「廃止予定だから利用することが非推奨 or 既に廃止済み」であることを示す単語になります
この機会に、是非これらの単語についても覚えておいてください!
実は、Selenium
の使い方を解説しているサイトやウェブページは多く存在しますが、まだまだ executable_path
等のドライバのパスを指定する Selenium
の使い方を紹介されていたり、ドライバのインストール手順を示されているものも多いです。古いバージョンの Selenium
の場合は正しい使い方となるのですが、新しいバージョンの Selenium
を利用する場合は executable_path
の指定は不要、むしろ、今後廃止される予定の引数なので executable_path
の指定はしない方が良いことになります。
どうしてもドライバのパスの指定が必要な場合
ということで、基本的にはドライバのパスは指定しないようにしましょう!というのが結論となります。
ただ、どうしてもドライバのパスを指定しなければならない場合もあると思いますので、その場合はドライバのパスを指定して Selenium
を利用してやっても良いです。
例えば Selenium Manager
がうまく動作してくれないような場合やネットワークに接続されていない環境で Selenium
を利用したいような場合などは、ドライバのパスを指定して Selenium
を利用する必要があります。
ちなみに、Python の場合は下記のように Service
オブジェクトを利用してやれば警告を出すことなく executable_path
でドライバのパスを指定することは可能です。ですが、だからと言ってドライバのパスを指定することを推奨するわけではありません。ドライバのパスを指定するとドライバを更新した際にスクリプトの変更も必要となる可能性があるため、極力ドライバのパスは指定せず、Selenium
から自動で設定されるようにした方が良いです。
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 Manager
は Selenium
のインストール時に同時にインストールされ、私の環境の場合は下記のディレクトリ内に実行可能ファイルが設置されるようになっていました(私の環境: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 Manager
は Selenium 4.6
から対応
まず、Selenium Manager
は Selenium 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
の存在を知らない方も多いのではないかと思い、せっかくなので記事として公開してみました!
こういった豆知識も提供していきたいと思っていますので、興味があれば、また私のサイトに訪れてみていただけると幸いです!
[…] 参考サイト daeudaeu.com:【Selenium】Selenium Managerの紹介【ドライバのインストール手順は不要!】 […]