ログ取得・デバッグ手法(ブラウザコンソールログ、HAR ファイル)

Seleniumを用いたE2E(End-to-End)テストにおいて、「品質向上とトラブルシューティング」を目的とする際に重要なのがログ取得とデバッグ手法です。とくにブラウザコンソールログや**HARファイル(HTTP Archive)**の取得は、問題の原因究明に極めて有効です。以下にそれぞれの概要と取得方法、活用ポイントを詳しく説明します。


1. ブラウザコンソールログの取得

概要

ブラウザの開発者ツールに表示される「コンソールログ(console.log, console.error, JavaScript例外など)」を、Seleniumを使ってプログラム的に取得できます。これにより、JavaScriptの実行エラーやネットワーク関連のエラーを検知できます。

対応ブラウザ

主に Chrome および Edge のWebDriver(ChromeDriverEdgeDriver)が対象です。Firefoxでは一部制限があります。

Javaでの取得例(Chrome)

java
import org.openqa.selenium.logging.LogEntries; import org.openqa.selenium.logging.LogEntry; import org.openqa.selenium.logging.LogType; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.chrome.ChromeDriver; ChromeOptions options = new ChromeOptions(); options.setCapability("goog:loggingPrefs", Map.of("browser", "ALL")); WebDriver driver = new ChromeDriver(options); driver.get("https://example.com"); LogEntries logs = driver.manage().logs().get(LogType.BROWSER); for (LogEntry entry : logs) { System.out.println(entry.getLevel() + " " + entry.getMessage()); }

主な活用シーン

  • JavaScriptエラーの捕捉と検証

  • コンソール出力を用いたテストのトレース

  • API通信失敗の初期兆候の確認


2. HARファイル(HTTP Archive)の取得

概要

HARファイルとは、ブラウザの通信記録(リクエスト/レスポンス)をJSON形式で記録したアーカイブです。ネットワーク遅延やAPI失敗、レスポンスコード・ヘッダー・ペイロードの検証などに有効です。

Selenium単体での対応

Selenium自身にはHARファイル出力機能がないため、外部プロキシツールと連携して取得します。

よく使われるツール

  • BrowserMob Proxy

  • mitmproxy

  • FiddlerCore(.NET)

BrowserMob Proxy との連携例(Java)

java
BrowserMobProxy proxy = new BrowserMobProxyServer(); proxy.start(0); Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy); ChromeOptions options = new ChromeOptions(); options.setProxy(seleniumProxy); WebDriver driver = new ChromeDriver(options); proxy.newHar("example.com"); driver.get("https://example.com"); Har har = proxy.getHar(); File harFile = new File("example.har"); har.writeTo(harFile);

主な活用シーン

  • APIのレスポンス確認(HTTPステータス、JSONレスポンスなど)

  • ページロード遅延の原因解析

  • リクエストヘッダーやクッキー情報のデバッグ


3. 品質向上・トラブルシューティングへの応用

技術 主な用途 有効なトラブルシューティング例
コンソールログ JavaScriptエラーの把握 動的要素が描画されない、イベントが発火しない
HARファイル 通信エラーの詳細確認 API 500/401エラー、遅延のボトルネック特定

4. 補足:自動収集とCI連携

  • ログの自動保存:テスト失敗時にコンソールログ・HARを保存し、アーティファクトとして出力

  • CIツール(GitHub Actions/Jenkins等)との連携:レポートにログ情報を添付し、分析の効率化


まとめ

Seleniumテストにおいて「品質向上とトラブルシューティング」を進めるには、ブラウザ内部の状態や通信状態を可視化することが重要です。ブラウザコンソールログとHARファイルの取得はその最前線であり、以下のような観点で導入すべきです。

  • JavaScriptエラーの検出 → コンソールログ

  • API失敗や通信ボトルネックの分析 → HARファイル

  • CI環境でのログアーカイブとレポート統合

これらを活用することで、信頼性の高いテスト基盤の構築と、迅速な障害切り分けが可能になります。

ChatGPT4o 生成日:2025/06/21