はじめに
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のセットアップ
- Chromeのバージョンに対応するChromeDriverをダウンロードします。
- ダウンロードした
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操作の自動化は非常に柔軟かつ強力になります。自動ログイン、フォーム送信、データ取得など、多くの作業が効率化できるため、業務にも活用可能です。