Javaを使ってスクリーンショットを撮影する方法を、デスクトップアプリケーションとWebブラウザ(Selenium)の両方に分けて解説します。操作の記録やエラー発生時のログ取得など、テストや自動化に役立つテクニックです。
この記事でわかること
- Java標準APIで画面全体のスクリーンショットを撮る方法
- Seleniumを使ってWebページのスクリーンショットを撮る方法
- 取得した画像を保存する方法(PNG形式)
デスクトップ画面をスクリーンショットする(Java AWT)
必要なライブラリ
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
コード例
public class DesktopScreenshot {
public static void main(String[] args) {
try {
// 画面全体のサイズを取得
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
// Robotを使ってスクリーンショット取得
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(screenRect);
// 画像ファイルとして保存(PNG形式)
ImageIO.write(image, "png", new File("desktop_screenshot.png"));
System.out.println("スクリーンショットを保存しました。");
} catch (AWTException | IOException e) {
e.printStackTrace();
}
}
}
出力例
desktop_screenshot.png
というファイル名でカレントディレクトリに保存されます。- PNG形式で画質劣化なし。
Webページのスクリーンショットを撮る(Selenium)
必要なライブラリ
- Selenium WebDriver
- ChromeDriver(もしくは他のブラウザドライバ)
Mavenの場合、pom.xml
に以下を追加
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.15.0</version>
</dependency>
コード例
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.io.FileHandler;
import java.io.File;
import java.io.IOException;
public class WebScreenshot {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
WebDriver driver = new ChromeDriver();
try {
driver.get("https://example.com");
// スクリーンショットを取得
File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileHandler.copy(srcFile, new File("web_screenshot.png"));
System.out.println("Webページのスクリーンショットを保存しました。");
} catch (IOException e) {
e.printStackTrace();
} finally {
driver.quit();
}
}
}
注意点
- WebDriverのバージョンとChromeDriverの互換性に注意
- ページ全体ではなく「表示範囲」のスクリーンショットになります(フルページは別ライブラリが必要)
よくある応用例
シチュエーション | 方法 |
---|---|
単純な画面キャプチャ(PC全体) | AWT + Robot |
自動化されたブラウザの記録 | Selenium + TakesScreenshot |
UIテストで失敗時に画像保存 | try-catchブロックに組込 |
操作ログの可視化・証跡保管 | タイマー or イベントトリガーで撮影 |
まとめ
Javaでスクリーンショットを撮る方法は目的によって使い分けが必要です:
- 画面全体のキャプチャ →
Robot
クラスを使ったAWTベース - Webブラウザのキャプチャ →
Selenium WebDriver
+TakesScreenshot
画像をログや資料に活用すれば、トラブル時の再現や説明が非常にスムーズになります。自動テストや業務自動化にも役立つので、ぜひ導入してみてください。