Selenium GridのWindowsサービス化

QUES TECH

こんにちは、ヒューマンクレスト 磯部です。
今回はテスト自動化のなかから Selenium Grid の TIPS をご紹介します。

Windows で Selenium Grid を使う場合、Windows のコマンドプロンプトから Hub や Node を実行出来ます。
しかし、テスト環境でコマンドプロンプトを開いたままにしておくと、操作ミスで閉じてしまったり、テスト環境を再起動した際に起動し忘れたりといった問題が起きます。
そこで、Grid Windowsのサービスとして登録する方法をご紹介します。

サービス登録

Gridをサービスとして動作させるには、Windows リソースキットに含まれる intsrv / srvany を使います。

  1. テスト環境で、コマンドプロンプトを管理者権限で開きます。
  2. コマンドプロンプトで以下を実行します。
    instsrv SeleniumGridHub "C:¥Program Files (x86)¥Windows Resource Kits¥Tools¥srvany.exe"
    

    「SeleniumGridHub」の部分はサービス名なので、好きな名前を入力してください。
    srvany.exeのパスは、環境によって異なります。
    このコマンドを実行することによって、サービスが登録されます。

  3. レジストリエディタでこのサービスに対して、実行するコマンドを登録します。
    1. regedit を実行してレジストリエディタを開きます。
    2. 「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SeleniumGridHub」を開きます。
    3. キー「Parameters」を作成します。
    4. 実行するバッチファイルを設定します。
      キー「Parameters」の下に以下の内容で値を登録します。

      名前 Application
      種類 REG_SZ
      データ [バッチファイル名]
    5. 実行するディレクトリを設定します。
      キー「Parameters」の下に以下の内容で値を登録します。

      名前 AppDirectory
      種類 REG_SZ
      データ [バッチの置き場所]

これでサービス登録できました。

ログ出力

サービス化すると不便な点もあります。
Grid Hub / Grid Node の動きはコマンドプロンプトに逐次表示されるのですが、サービス化すると標準出力の内容は見えなくなってしまいます。

そこで、サービス化した後は、以下の seleniumのオプションを使ってログを出力しています。

-log [ログファイルのパス]

ただし、Grid Node のログはすぐに肥大化し、数日の運用で 10Mbyteを超えてしまいました。いまのところ、ログレベルのようなオプションも見つけられていません。そこで、Node のログについては普段は出力せず、何か Grid 関連の問題が発生して切り分けを行いたい時のみ設定するようにしています。

以上、Windows で Selenium Grid を運用する場合のTIPSでした。