JavaとSeleniumで画像付き操作ログを自動生成する方法【テスト自動化にも】

はじめに

Webアプリのテストや操作履歴の記録において、「実際にどう動いたか」が一目で分かる画像付きログは非常に便利です。JavaとSeleniumを使えば、各ステップごとのスクリーンショットを自動で保存し、ログファイルと連携することが可能です。

この記事では、操作ステップの自動記録+スクリーンショット保存の仕組みを、コード付きで解説します。


前提条件・準備

必要なライブラリ

  • Java 11 以降
  • Selenium WebDriver(v4.x推奨)
  • ChromeDriver(または他のブラウザ用Driver)

Maven依存関係の例

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>4.18.1</version>
</dependency>

スクリーンショット付きログの基本構成

操作ごとに以下の処理を行います

  1. 操作内容をテキストログに記録
  2. スクリーンショットをPNG形式で保存
  3. ログに画像ファイル名も記録

サンプルコード:ログ出力と画像保存

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import java.io.*;
import java.nio.file.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class SeleniumScreenshotLogger {
public static void main(String[] args) throws Exception {
WebDriver driver = new ChromeDriver();
Logger logger = new Logger("operation_log");

try {
driver.get("https://example.com");
logger.log(driver, "サイトを開きました");

WebElement link = driver.findElement(By.linkText("About"));
link.click();
logger.log(driver, "Aboutリンクをクリックしました");

} finally {
driver.quit();
logger.close();
}
}

static class Logger {
private final PrintWriter logWriter;
private final Path imgDir;
private int step = 1;
private final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss");

Logger(String baseName) throws IOException {
imgDir = Files.createDirectories(Paths.get("logs", baseName, "images"));
Path logFile = Paths.get("logs", baseName, "log.txt");
Files.createDirectories(logFile.getParent());
logWriter = new PrintWriter(Files.newBufferedWriter(logFile));
}

void log(WebDriver driver, String message) throws IOException {
String timestamp = LocalDateTime.now().format(dtf);
String filename = String.format("step%02d_%s.png", step++, timestamp);
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
Path dest = imgDir.resolve(filename);
Files.copy(screenshot.toPath(), dest, StandardCopyOption.REPLACE_EXISTING);

logWriter.printf("[%s] %s (画像: %s)%n", timestamp, message, filename);
}

void close() {
logWriter.close();
}
}
}

ログ出力例(log.txt)

[2025-06-01_103512] サイトを開きました (画像: step01_20250601_103512.png)
[2025-06-01_103515] Aboutリンクをクリックしました (画像: step02_20250601_103515.png)

応用例

  • 操作ログをHTMLレポート化する(画像タグで埋め込み)
  • テストケースとの統合(JUnit+Selenium)
  • CIツールと連携して自動保存

まとめ

JavaとSeleniumを使えば、ブラウザ操作の各ステップを画像付きで記録することができます。特にテスト自動化や操作証跡の保存において、再現性・可視性が向上します。

操作内容の可視化をしたい方や、不具合報告をしやすくしたい開発チームには非常に有効な手法です。

タイトルとURLをコピーしました