Seleniumの仕組み・アーキテクチャ

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という仕組みを用いた構成となっています。

登場人物を以下に整理します。

ソフトウェア説明
テストスクリプト・テスターが準備するテスト自動操作プログラム。
・Java、Python、Rubyなどで記述。
Selenium WebDriver・ブラウザを操作するAPIを提供するライブラリ。プログラミング言語毎に専用ライブラリが存在。
・テストスクリプトからAPIを通じて命令を受け、JSON Wire Protocolまたは WebDriver W3C protocol(HTTPプロトコル)でブラウザ(後述のドライバー)側に転送。その後、実行結果を受け取る。
・get,find_element,click,send_keys等のコマンド(API)が準備されており、これらを使用してブラウザ操作。
ドライバー・Chrome,Edgeなど一部のブラウザでは、ChromeDriver,EdgeDriverなどのドライバー(ドライバーサーバー)が必要。
・Selenium WebDriverから受けた命令に従い、ブラウザを操作。
・使用するドライバーやスクリプト言語によっては、Selenium WebDriverとドライバーの間にSelenium Serverというソフトウェアが必要。
ブラウザ・Chrome,Edge,FireFoxなどのブラウザ。


以前、モバイルアプリの自動テストツール「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が好きな人のブログ

スポンサーリンク