Seleniumとは?
Seleniumは、ブラウザの操作を自動化するためのツールです。Seleniumを使うことで、ユーザーインターフェース(UI)のエンドツーエンド(E2E)テストを行い、アプリケーションの動作をシミュレートすることができます。Webページ上の要素に対してクリックや入力を行うだけでなく、期待される挙動が正しいかどうかを確認するテストを自動化することができます。
エンドツーエンドテストとは?
エンドツーエンド(E2E)テストは、アプリケーションの最終的な動作を確認するためのテスト手法です。ユーザーの視点からアプリケーションの動作をシミュレートし、期待される結果が得られるかどうかを検証します。
UIテストでは、ボタンのクリックやフォームの送信、ページ遷移などのユーザー操作を自動化してテストします。これにより、手動テストにかかる時間を大幅に短縮し、正確な動作確認が可能となります。
SeleniumによるUIテストの手順
Seleniumを使ったUIテストの手順を以下に示します。簡単なサンプルコードを使って、実際にSeleniumを利用したUIテストを説明します。
- Selenium WebDriverのインストール: SeleniumはWebDriverを通じてブラウザを制御します。まずはSelenium WebDriverをインストールします。
- テストスクリプトの作成: テストしたい動作(例:ボタンをクリックしてページが遷移するかどうか)をスクリプトに書きます。
- ブラウザの操作: テストスクリプトを実行して、ブラウザで自動的にUI操作を行い、結果を確認します。
Seleniumのインストール方法
まず、Selenium WebDriverをインストールして、Node.jsプロジェクトで利用できるようにします。
npm install selenium-webdriver
このコマンドを実行することで、Selenium WebDriverがプロジェクトにインストールされます。
具体例: Seleniumを使ったUIテスト
次に、Seleniumを使って、簡単なUIテストを行うスクリプトを紹介します。以下のテストでは、Googleの検索ページにアクセスし、「Selenium」を検索する動作を自動化しています。
ステップ1: テストスクリプトの作成
const { Builder, By, Key, until } = require('selenium-webdriver');
async function searchGoogle() {
let driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('https://www.google.com');
await driver.findElement(By.name('q')).sendKeys('Selenium', Key.RETURN);
await driver.wait(until.titleIs('Selenium - Google 検索'), 1000);
} finally {
await driver.quit();
}
}
searchGoogle();
このスクリプトは、Chromeブラウザを立ち上げ、Googleのホームページにアクセスし、検索ボックスに「Selenium」と入力して検索を実行します。
ステップ2: テストスクリプトの実行
スクリプトを実行することで、ブラウザが自動的に開き、テストが実行されます。テストが終了すると、ブラウザが閉じられます。
Seleniumを使ったテストの流れ
Seleniumを使ったテストの流れをまとめると、以下のようになります。
- ブラウザを立ち上げる
- 指定したURLにアクセスする
- 指定した要素を探す(例:検索ボックス)
- 要素に対して操作を行う(例:テキスト入力)
- 期待される結果が得られるか検証する
- テストが終了したらブラウザを閉じる
WebDriverでの基本的な操作
操作 | WebDriverメソッド | 説明 |
---|---|---|
ブラウザの起動 | driver.get(URL) |
指定したURLにアクセスします。 |
要素の検索 | driver.findElement(By.name('q')) |
指定した要素(例: name属性が’q’の要素)を探します。 |
テキストの入力 | element.sendKeys('Selenium') |
要素に対してテキストを入力します。 |
ページ遷移の待機 | driver.wait(until.titleIs('Selenium - Google 検索')) |
ページのタイトルが指定した値になるまで待機します。 |
ブラウザの終了 | driver.quit() |
テストが終了した後、ブラウザを閉じます。 |
Seleniumを使うメリット
Seleniumを使ったテストには、以下のようなメリットがあります。
- ブラウザを自動化: ユーザーインターフェースの操作を自動化し、手作業を省力化します。
- 複数のブラウザでテスト可能: ChromeやFirefoxなど、複数のブラウザでテストを実行できます。
- 繰り返しテストが可能: 同じテストを何度でも簡単に繰り返し実行できるため、回帰テストが容易です。
まとめ
Seleniumを使ったUIテストは、ユーザーインターフェースの動作を自動化して検証できるため、手動テストよりも効率的です。特に、頻繁な回帰テストや異なるブラウザでの動作確認に適しています。エンドツーエンドテストとして、Seleniumは非常に強力なツールであり、効率的なテストを行うために是非活用してみてください。