Selenium コンポーネント
WebDriver を使用してテストスイートを構築するには、いくつかのコンポーネントを理解し、効果的に使用する必要があります。ソフトウェアのすべてと同様に、同じ概念に対して異なる用語を使用する人がいます。以下は、この説明で用語がどのように使用されているかの内訳です。
用語集
- API: アプリケーションプログラミングインターフェース。これは、WebDriver を操作するために使用する「コマンド」のセットです。
- ライブラリ: API と API を実装するために必要なコードを含むコードモジュール。ライブラリは、各言語バインディングに固有です。例: Java の .jar ファイル、.NET の .dll ファイルなど。
- ドライバ: 実際のブラウザの制御を担当します。ほとんどのドライバは、ブラウザベンダー自身によって作成されます。ドライバは通常、テストスイートを実行するシステムではなく、ブラウザ自体と同じシステム上で実行される実行可能モジュールです。(ただし、同じシステムである場合もあります。)注: ドライバをプロキシと呼ぶ人もいます。
- フレームワーク: WebDriver スイートのサポートとして使用される追加のライブラリ。これらのフレームワークは、JUnit や NUnit などのテストフレームワークである場合があります。また、Cucumber や Robotium などの自然言語機能をサポートするフレームワークである場合もあります。フレームワークは、テスト対象のシステムの操作または構成、データ作成、テストオラクルなどのタスクのために作成および使用することもできます。
部品と要素
最小限では、WebDriver はドライバを介してブラウザと通信します。通信は双方向です。WebDriver はドライバを介してブラウザにコマンドを渡し、同じルートを介して情報を返信として受け取ります。

ドライバはブラウザに固有です。例: Google Chrome/Chromium 用の ChromeDriver、Mozilla Firefox 用の GeckoDriver など。ドライバはブラウザと同じシステム上で実行されます。これは、テスト自体が実行されるシステムと同じシステムである場合もあれば、そうでない場合もあります。
上記の簡単な例は直接通信です。ブラウザへの通信は、Selenium Server または RemoteWebDriver を介したリモート通信である場合もあります。RemoteWebDriver は、ドライバおよびブラウザと同じシステム上で実行されます。

リモート通信は、Selenium Server または Selenium Grid を使用して行うこともできます。どちらもホストシステム上のドライバと通信します。

フレームワークがどこに適合するか
WebDriver の仕事は 1 つしかありません。それは、上記のいずれかの方法でブラウザと通信することです。WebDriver はテストについて何も知りません。比較方法、合格または不合格のアサート方法を知りません。また、レポートや Given/When/Then 文法については何も知りません。
ここで、さまざまなフレームワークが登場します。最低限、言語バインディングに一致するテストフレームワークが必要です。例: .NET 用の NUnit、Java 用の JUnit、Ruby 用の RSpec など。
テストフレームワークは、テスト内の WebDriver と関連するステップを実行および実行する役割を担います。そのため、次の図のようなものと考えることができます。

Cucumber などの自然言語フレームワーク/ツールは、上記の図のテストフレームワークボックスの一部として存在する場合があります。または、カスタム実装でテストフレームワーク全体をラップする場合もあります。