Seleniumを使ったWebシステムのテストにおいて、HTTPのステータスコードを確認する方法です。
HTTPのステータスコードはBrowserMob Proxyを使用することで取得することができます。
この記事ではSeleniumテスト環境でBrowserMob Proxyを使ったHTTPステータスコードの確認方法を検証しました。
BrowserMob Proxyの準備
Selenium単体ではHTTPレスポンス情報は取得できません。
そこでBrowserMob Proxyを使います。
BrowserMob Proxyでproxyを立ち上げ、Seleniumとテスト対象システム間の通信をproxy経由させることで、HTTPレスポンスを監視できます。
まず、BrowserMob Proxyのライブラリを以下のサイトからダウンロードします。
https://bmp.lightbody.net/
ダウンロードしたらzipを解凍し、browsermob-proxy-***フォルダ直下の.jarファイルとlibフォルダ内の.jarファイルをプロジェクトに追加します。
Selenium WebDriver+BrowserMob Proxyを使ったHTTP Status Code取得サンプル(Java)
以下のようにSelenium WebDriverのインスタンスを作る際にproxy通信の設定をします。
これで生成したSeleniumのWebDriverは通信にproxyを経由するようになります。
次に、通信監視のため、BrowserMob ProxyのResponseInterceptorインターフェイスの実装を行います。
ResponseInterceptorインターフェイスの実装クラスを作り、processメソッドをオーバライドします。
このprocessメソッドはHTTP通信が発生するたびに呼び出されます。
WebDriverを破棄する際に同時にproxyも停止させます。
- driver.quit();
- proxy.stop();
まとめ
Seleniumテスト環境でHTTPレスポンスを監視するには、
- BrowserMob Proxyを使ってproxy経由の監視を行う
- 監視処理(ResponseInterceptor)を実装しprocessメソッドを好きなようにオーバライドする
- processメソッドはHTTP通信発生時にコールされる
- WebDriver破棄時にproxy.stop()
Seleniumは様々な情報がネットに散らばっていて探すのが大変ですね。少しでもお役にたてれば嬉しいです。