JavaでSeleniumを使ってWeb操作を自動化する方法【実例付き】

はじめに

Seleniumは、Webブラウザを自動操作できる強力なツールです。Pythonでの利用が有名ですが、Javaでも同様に高機能な自動化が可能です。この記事では、Javaを使ってWebページへの入力、クリック、自動ログインといった操作を自動化する方法を、実例を交えて解説します。

Seleniumとは? Javaで使う理由

SeleniumはWebアプリケーションのUIテストツールとして誕生しましたが、現在ではあらゆるWeb操作の自動化に使われています。JavaでSeleniumを使うメリットには、次のような点があります。

  • Java製の業務システムと親和性が高い
  • メンテナンス性が高く、継続的な開発に適している
  • MavenやGradleで簡単に導入可能

開発環境の準備

JavaとIDEのセットアップ

  • Java 11 以上をインストール
  • IDE は IntelliJ IDEA または Eclipse を推奨

Seleniumライブラリの導入(Maven)

pom.xml に以下の依存関係を追加します:

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

ChromeDriverのセットアップ

  1. Chromeのバージョンに対応するChromeDriverをダウンロードします。
  2. ダウンロードしたchromedriver.exeをプロジェクトのディレクトリに配置します。

SeleniumでWeb操作を自動化する基本コード

指定したサイトにログインします。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumExample {
  public static void main(String[] args) {
    System.setProperty("webdriver.chrome.driver", "path/to/chromedriver.exe");
    WebDriver driver = new ChromeDriver();

    driver.get("https://example.com/login");

    WebElement userField = driver.findElement(By.id("username"));
    userField.sendKeys("yourUser");

    WebElement passField = driver.findElement(By.id("password"));
    passField.sendKeys("yourPassword");

    driver.findElement(By.id("loginButton")).click();
  }
}

よくあるエラーと対策

要素が見つからない場合(NoSuchElementException)

  • セレクタ(IDやclass)が間違っている
  • 要素がまだ読み込まれていない → 明示的な待機を使う
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("loginButton")));

スクリーンショットやページ情報の取得

スクリーンショットを保存

File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, new File("screenshot.png"));

ページ上のテキスト取得

String message = driver.findElement(By.className("msg")).getText();
System.out.println(message);

まとめ

JavaとSeleniumを組み合わせれば、Web操作の自動化は非常に柔軟かつ強力になります。自動ログイン、フォーム送信、データ取得など、多くの作業が効率化できるため、業務にも活用可能です。

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