Webブラウザを自動操作するソフトウェアSelenium関連の記事をいくつかあげましたが、そもそもSeleniumとその仕組み(アーキテクチャ)については記してなかったなと。ということで、今回はそれについて書いてみます。
Seleniumには、これまでにいくつかのバージョンがありました。
Selenium 1(Selenium RC)
Selenium 2(Selenium WebDriver)
Selenium 3
Selenium
4
(参考)
入門、Selenium | 第1回 Seleniumの仕組み | CodeGrid
2022/6 現在の最新版であるSelenium 4 については、Selenium 2以降で採用されているSelenium WebDriverという仕組みを用いた構成となっています。
登場人物を以下に整理します。
以前、モバイルアプリの自動テストツール「Appium」についてアーキテクチャの記事を上げましたが、その元となっているSeleniumも似たような構成になっています。シーケンス図で図示すると、以下のようになります。
ハードウェアとしては1つのPC内で完結するので、Appiumよりシンプルです。アーキテクチャの点で大きな特徴はやはりSelenium
WebDriverとドライバーの存在ですね。これらはJSON Wire
Protocol(HTTPプロトコル)を使用するというRESTfulなアーキテクチャをとっています。
※ 最新のSelenium 4では WebDriver W3C protocolというプロトコルが採用されています。
実際にドライバーに対して、HTTPリクエストを送って動かす事を検証されているがサイトありますので、こちらが参考になります。
手を動かしながら学ぶSeleniumWebDriverの仕組み - Qiita
このSelenium WebDriverとドライバーによる自動操作の仕組みは、現在のSelenium 4から2世代前のSelenium 2から使用されており、Appiumにも継承されているアーキテクチャです。
ブラウザ・アプリ自動テストでは大きな成功をおさめている構成のようです。ただ、ブラウザのバージョン更新に合わせてドライバーもその都度、最新版をダウンロードしてこなければならないのがややネックな気もしますが・・・
Seleniumアーキテクチャについては、参考サイトの他以下の書籍を参考にさせていただきました。
Seleniumの仕組みのほか、API(コマンド)、実用例などを網羅されており、実務でも役立つ内容です。
このSeleniumをモバイルアプリ向けに発展させたのがAppiumです。Appiumのアーキテクチャは以前こちらで概説しております。
Appiumとは?仕組み(アーキテクチャ)を整理【Android,iOS】 | 9が好きな人のブログ