コマンドラインランナー
Selenium IDE のテストを、コードを書くことなく、あらゆるブラウザで、並列に、そして Grid 上で実行できるようになりました。
必要なのは、Selenium IDE コマンドラインランナーのインストール、必要なブラウザドライバの取得(ローカルでテストを実行する場合)、そしてコマンドプロンプトから必要なオプションを指定してランナーを起動するだけです。
前提条件
コマンドラインランナーを動作させるには、以下の依存関係が必要です。
node
(Node.js プログラミング言語)バージョン8
または10
npm
(NodeJS パッケージマネージャー)。通常はnode
と一緒にインストールされます。selenium-side-runner
(Selenium IDE コマンドラインランナー)- そして、使用するブラウザドライバ(次のセクションで詳しく説明します)
> brew install node
> npm install -g selenium-side-runner
注:システム構成は、上記のサンプルで使用されているものとは異なる場合があります(例:MacOS の Homebrew)。その場合は、パッケージマネージャーの Node インストールに関するドキュメントを参照するか、Node ダウンロードページから直接オペレーティングシステム用の Node インストーラーをダウンロードしてください。
ブラウザドライバのインストール
ローカルでテストを実行する場合は、各ブラウザに追加の設定が必要です。
Selenium は、ブラウザドライバと呼ばれる小さなバイナリアプリケーションを介して各ブラウザと通信します。各ブラウザには独自のドライバがあり、システムパスに手動でダウンロードして追加するか、パッケージマネージャーを使用してブラウザドライバの最新バージョンをインストールできます(推奨)。
また、マシンにブラウザがインストールされている必要があります。
Chrome
Chrome の場合は、ChromeDriverが必要です。
> npm install -g chromedriver
Edge
Microsoft Edge の場合は、Windows で実行している必要があり、EdgeDriverも必要です。
> npm install -g edgedriver
Firefox
Firefox の場合は、geckodriverが必要です。
> npm install -g geckodriver
Internet Explorer
Internet Explorer の場合は、Windows で実行している必要があり、IEDriverも必要です。
> npm install -g iedriver
IEDriver を動作させるには、追加の設定が必要です。詳細はこちらをご覧ください。
Safari
Safari の場合は、SafariDriverが必要です。
最新バージョンの Safari に同梱されています。マシンで有効にするには、いくつかの手順を実行する必要があります。詳細は、SafariDriver ドキュメントのこのセクションをご覧ください。
ランナーの起動
すべてがインストールされたら、テストを実行するのは、コマンドラインから `selenium-side-runner` を呼び出し、その後ろに先に保存したプロジェクトファイルへのパスを付けるだけです(はじめにを参照)。
> selenium-side-runner /path/to/your-project.side
注:複数の `.side` ファイルがある場合は、ワイルドカードを使用できます(例:`/path/to/*.side`)。
このコマンドを実行すると、テストが複数のブラウザウィンドウで並列に実行され、`n`個のプロセス(`n`はマシンの利用可能なCPUコア数)に分散されます。
プロセスの数は、提供できるさまざまな引数を使用して実行時に構成できます。
注:並列実行は、スイートレベルで自動的に行われます。スイート内のテストを並列に実行する場合は、変更する必要がある設定があります。詳細は、スイートでのテストの並列化を参照してください。
実行時設定
ランナーを使用すると、実行時にさまざまな設定引数を渡すことができます。
ローカルでの異なるブラウザでの実行
機能の最も一般的な用途は、ローカルテスト実行のために異なるブラウザを指定することです。
selenium-side-runner -c "browserName=chrome"
selenium-side-runner -c "browserName='internet explorer'"
selenium-side-runner -c "browserName=edge"
selenium-side-runner -c "browserName=firefox"
selenium-side-runner -c "browserName=safari"
注:ローカルでテストを実行する場合は、各ブラウザにいくつかの設定が必要です。詳細は、ブラウザドライバのインストールを参照してください。
Selenium Grid での実行
Grid(独自の Grid または Sauce Labs などのホスト型プロバイダー)でテストを実行するには、さまざまな機能と共にそれを指定できます。
selenium-side-runner --server http://localhost:4444/wd/hub -c "browserName='internet explorer' version='11.0' platform='Windows 8.1'"
--server
は Grid への URL を指定し、-c
は Grid で使用する機能です。
利用可能な機能の完全なリストは、こちらをご覧ください。
並列プロセスの数の指定
Grid で実行する場合は、実行する並列セッションの数を制御したい場合があります。そのためには、-w n
コマンドフラグ(`n` は必要なプロセスの数)を使用できます。
selenium-side-runner -w 10 --server http://localhost:4444/wd/hub
ランナーは、ワーカーの数をコンピューターで使用可能なCPUコア数と同じ数に自動的に設定します。ほとんどの場合、これが最適なオプションです。
Chrome固有の機能
マシンにChromeが標準以外の場所にインストールされている場合は、ChromeDriverが検索場所を知るようにパスを指定できます。
selenium-side-runner -c "goog:chromeOptions.binary='/path/to/non-standard/Chrome/install'"
Chrome固有の機能を使用すると、ヘッドレスでテストを実行することもできます。
selenium-side-runner -c "goog:chromeOptions.args=[disable-infobars, headless]"
すぐに使えるフレームワーク
ランナーには、他にも便利な機能が標準で備わっています。従来のテスト自動化フレームワークで利用できることが期待される機能です。
ベースURLの変更
異なるベースURLを指定する機能により、テストを簡単に異なる環境(例:ローカル開発、テスト、ステージング、本番)に向けることができます。
selenium-side-runner --base-url https://localhost
テストのフィルタリング
--filter target
コマンドフラグ(ここで target
は正規表現値です)を使用して、テストの対象サブセットを実行することもできます。指定された検索条件を含むテスト名のみが実行されます。
selenium-side-runner --filter smoke
テスト結果のファイルへの出力
テスト結果をファイルにエクスポートする必要がある場合(例:CIプロセスの一部として実行する場合)、--output-directory
フラグと --output-format
フラグを組み合わせて使用できます。
--output-directory
は、テスト結果ファイルを配置する場所を定義します。絶対パスまたは相対パスのいずれかを取ることができます。
--output-format
は、テスト結果ファイルに使用する形式を定義します。jest
(例:JSON)またはjunit
(例:XML)のいずれかです。デフォルトの形式はjest
です(例:タイプを指定しない場合)。
selenium-side-runner --output-directory=results
# Outputs results in `jest` frormat in `./results/projectName.json'
selenium-side-runner --output-directory=results --output-format=jest
# Outputs results in `jest` frormat in `./results/projectName.json'
selenium-side-runner --output-directory=results --output-format=junit
# Outputs results in `junit` frormat in `./results/projectName.xml'
デフォルト設定の指定
必要なコマンドライン引数をすべて覚える必要がないように(扱いにくくなる可能性があります)、実行時パラメータを構成ファイルに保存することができます。
使用できる構成ファイルには2種類あります。
オプション1
テストを実行するディレクトリに.side.yml
ファイルを作成します。ランナーはそれを自動的に取得します。ファイルの内容の例を以下に示します。
capabilities:
browserName: "firefox"
baseUrl: "https://www.seleniumhq.org"
server: "http://localhost:4444/wd/hub"
ファイルを無視してコマンドライン引数を使用する場合は、実行時に他のコマンドと共に--no-sideyml
を使用します。
オプション2
.side.yml
ファイルを使用する代わりに、任意の名前と場所を持つYAMLファイルに実行時パラメータを指定し、テストの実行時にその場所を指定できます。
selenium-side-runner --config-file "/path/to/your/config.yaml"
注:--config-file
フラグを使用する場合、.side.yml
は無視されます。
Selenium IDEの設定
スイート内でのテストの並列化
標準では、ランナーはスイートを並列で実行しますが、スイート内のテストは順次実行されます。
特定のスイート内のテストを並列で実行するには、Selenium IDEでそのスイートの設定を更新する必要があります。
- Selenium IDEで「テストスイート」ビューに切り替えます。
- 設定するスイートの名前の横にあるドロップダウンメニューをクリックし、「設定」をクリックします。
- 「並列実行」のチェックボックスをクリックします。
- 「送信」をクリックします。
- Selenium IDEプロジェクトファイルを保存します。
複数のスイートでこの方法で設定するには、各スイートで手順1〜4を繰り返します。終了したら、プロジェクトファイルを必ず保存してください。
詳細オプション
追加パラメータ
Selenium IDEのプラグインは、独自の固有の実行時パラメータを指定できます。それらは--params
フラグを使用して使用できます。
このオプションは、さまざまなオプションの文字列を取ります(機能を指定する方法と同様です)。
基本的な使用方法
パラメータの名前とその値を指定します。最も基本的な方法は、文字列値を指定することです。
selenium-side-runner --params "a='example-value'"
ネストされたパラメータ
ドット表記を使用して、パラメータをネストすることもできます。
selenium-side-runner --params "a.b='another example-value'"
配列値
文字列の代わりに、英数字の値の配列を指定できます。
selenium-side-runner --params "a.b.c=[1,2,3]"
複数のパラメータ
--params
は一度しか呼び出すことができませんが、スペースで区切って複数のパラメータを指定できます。
selenium-side-runner --params "a='example-value' a.b='another example-value' a.b.c=[1,2,3]"
プロキシサーバーの使用
ランナーで以下のオプションを使用して、ブラウザにプロキシ機能を渡すことができます。
ダイレクトプロキシ
このオプションは、WebDriverがすべてのブラウザプロキシをバイパスするように設定します。
コマンドラインから
> selenium-side-runner --proxy-type=direct
.side.yaml
内で
proxyType: direct
手動プロキシ
ブラウザのプロキシを手動で設定します。
コマンドラインから
selenium-side-runner --proxy-type=manual --proxy-options="http=localhost:434 bypass=[http://localhost:434, http://localhost:8080]"
.side.yaml
内で
proxyType: manual
proxyOptions:
http: http://localhost:434
https: http://localhost:434
ftp: http://localhost:434
bypass:
- http://localhost:8080
- http://host:434
- http://somethingelse:32
PAC プロキシ
指定されたURLにあるPACファイルを使用して、ブラウザプロキシを設定するようにWebDriverを設定します。
コマンドラインから
selenium-side-runner --proxy-type=pac --proxy-options="http://localhost/pac"
.side.yaml
内で
proxyType: pac
proxyOptions: http://localhost/pac
SOCKS プロキシ
SOCKS プロキシのプロキシ設定を作成します。
コマンドラインから
selenium-side-runner --proxy-type=socks --proxy-options="socksProxy=localhost:434 socksVersion=5"
.side.yaml
内で
proxyType: socks
proxyOptions:
socksProxy: localhost:434
socksVersion: 5
システムプロキシ
現在のシステムのプロキシを使用するようにWebDriverを設定します。
コマンドラインから
selenium-side-runner --proxy-type=system