Selenium でサポートされているプラットフォーム
Selenium では、互換性の確保に本格的に取り組んでいます。そのため Selenium は、多くのブラウザ、オペレーティングシステム、プログラミング言語、テスティングフレームワークで動作します。Firefox から JUnit まで、さまざまな環境がカバーされています。
ブラウザ
| ブラウザ | Selenium IDE | Selenium Remote Control | Selenium Core |
|---|---|---|---|
| Firefox 3 | テストの記録と再生 | ブラウザの起動、テストの実行 | テストの実行 |
| Firefox 2 | テストの記録と再生 | ブラウザの起動、テストの実行 | テストの実行 |
| IE 8b1 | サポートされていません | ? | ? |
| IE 7 | サポートされていません | ブラウザの起動、テストの実行 | テストの実行 |
| Safari 3 | サポートされていません | ブラウザの起動、テストの実行 | テストの実行 |
| Safari 2 | サポートされていません | ブラウザの起動、テストの実行 | テストの実行 |
| Opera 9 | サポートされていません | ブラウザの起動、テストの実行 | テストの実行 |
| Opera 8 | サポートされていません | ブラウザの起動、テストの実行 | テストの実行 |
| 上記以外 | サポートされていません | 部分的サポートが可能* | テストの実行** |
* Selenium Remote Control サーバーは任意の実行可能プログラムを起動できますが、ブラウザのセキュリティ設定によっては、技術的制限が生じ、機能が限定される可能性があります。
** Selenium Core は JavaScript で記述されているので、JavaScript を適切にサポートしているほとんどのブラウザで (理論上は) 動作するはずです。ブラウザのセキュリティ設定があるため、一部の操作は Selenium Remote Control を介した場合にのみ可能です。
オペレーティングシステム
| OS | Selenium IDE | Selenium Remote Control | Selenium Core |
|---|---|---|---|
| Windows | Firefox 2 以上で動作 | ブラウザの起動、テストの実行 | テストの実行 |
| OS X | Firefox 2 以上で動作 | ブラウザの起動、テストの実行 | テストの実行 |
| Linux | Firefox 2 以上で動作 | ブラウザの起動、テストの実行 | テストの実行 |
| Solaris | Firefox 2 以上で動作 | ブラウザの起動、テストの実行 | テストの実行 |
| 上記以外 | Firefox 2 以上で動作するはず | ブラウザの起動、テストの実行* | テストの実行** |
* Selenium Remote Control サーバーは Java で記述されているので、サポートされているブラウザが利用可能であれば、ほかのシステムでも動作する可能性があります。
** Selenium Core は JavaScript で記述されているので、JavaScript を適切にサポートしているほとんどのブラウザで (理論上は) 動作するはずです。ブラウザのセキュリティ設定があるため、一部の操作は Selenium Remote Control を介した場合にのみ可能です。
プログラミング言語
プログラミング言語は、Selenium Remote Control "ドライバ" を介してサポートされます。ドライバとは、Selenium API のコマンドをメソッド/関数の形でネイティブに公開する、各言語用に作成されたライブラリのことです。
| 言語 | Selenium IDE | Selenium Remote Control | Selenium Core |
|---|---|---|---|
| C# | コードの生成 | ライブラリ ("ドライバ") サポート | - |
| Java | コードの生成 | ライブラリ ("ドライバ") サポート | - |
| Perl | コードの生成 | ライブラリ ("ドライバ") サポート | - |
| PHP | コードの生成 | ライブラリ ("ドライバ") サポート | - |
| Python | コードの生成 | ライブラリ ("ドライバ") サポート | - |
| Ruby | コードの生成 | ライブラリ ("ドライバ") サポート | - |
| 上記以外 | 独自コードの生成* | HTTP リクエストを介したコマンド** | - |
* 実際に独自コードのジェネレータをセットアップすれば、任意の言語への出力が可能です。テンプレートは JavaScript で記述されていますが、テキストを出力するだけです。
** HTTP リクエストを生成可能な任意の言語が Selenium Remote Control にコマンドを渡すことができます。上にリストアップされた言語については、すでに作成済みのラッパーライブラリが用意されています。
テスティングフレームワーク
テスティングフレームワークは必須ではありませんが、テストの自動化に役立ちます。
| フレームワーク | Selenium IDE | Selenium Remote Control | Selenium Core |
|---|---|---|---|
| Bromine | IDE に追加して使用するテンプレートが付属 | 独自ドライバを介したブラウザの操作、アサーションのチェック | 独自サポートあり** |
| JUnit | 設定不要でコード生成 | Java ドライバを介したブラウザの操作、アサーションのチェック | - |
| NUnit | 設定不要でコード生成 | .NET ドライバを介したブラウザの操作、アサーションのチェック | - |
| RSpec (Ruby) | 独自コード生成テンプレート* | Ruby ドライバを介したブラウザの操作、アサーションのチェック | - |
| Test::Unit (Ruby) | 設定不要でコード生成 | Ruby ドライバを介したブラウザの操作、アサーションのチェック | - |
| TestNG (Java) | 独自コード生成テンプレート* | Java ドライバを介したブラウザの操作、アサーションのチェック | - |
| unittest (Python) | 設定不要でコード生成 | Python ドライバを介したブラウザの操作、アサーションのチェック | - |
| 上記以外 | 独自コード生成テンプレート* | HTTP リクエストを介したブラウザの操作、アサーションのチェック*** | - |
* 「設定不要」フレームワークでは、ビルトインされたコードジェネレータが該当するフレームワーク向けのコードを生成しますが、JavaScript ベースのテンプレートを修正すれば、任意の種類のコードを出力できます。
** Bromine は特に Selenium を対象に作られており、Selenium Core と Selenium Remote Control をダイレクトにサポートしています。Bromine 以外のテスティングフレームワークは、Selenium Remote Control ドライバを使ってテストを実行します。
*** 適切なドライバ (または HTTP コマンド) を使用して、"click" や "isElementPresent" などのコマンドを呼び出せば、任意のテスティングフレームワークでブラウザを操作したりテストを実行したりできます。Selenium Remote Control は指定されたコマンドを処理するだけで、実際に何がこれらのコマンドを呼び出しているかについては関知しません。
