【単純反復作業による人的ミスを無くそう!】Seleniumでブラウザ操作を自動化してみる #環境セットアップ編
こんにちは。アバナードの井関です。
本記事ではSeleniumによるブラウザ操作自動化を目的とした、コーディング環境のセットアップとサンプルコード実行の手引きをご紹介します。
書いている途中でちょっと長くなりそうなことに気が付いたので今回はまずは環境セットアップまでとします。
テスト工程で発生する反復作業
システム開発に不可欠なテスト工程ですが、スクリーンショットの取得やエビデンス作成に多くの時間を取られることはないでしょうか?
また、上記のような作業を大量に反復することによって注意力を失い、肝心なバグを見落としたりすることはないでしょうか?
そういった課題を少しでも解決することができないかと考え、今回はSeleniumを使用してブラウザ作業の自動化を検証してみます。
手順はSeleniumのリファレンスサイトを参考にしました。
Seleniumとは
Selenium(セレニウム)はWebブラウザの操作を自動化するためのフレームワークです。自動でブラウザを操作し、画面のHTML要素やcookieを取得可能です。取得した情報の正誤判定までソースコードに記述すればWebサイトの動作テストを一部自動化することができます。
人間が行ったブラウザ操作を記録して再現するブラウザ拡張機能の『Selenium IDE』もありますが、今回はJava向けのSeleniumAPI呼び出しを実装します。ちょっとした日々の繰り返し作業を自動化したい場合などは『Selenium IDE』が活躍するかもしれません。
Selenium の対応言語としてはJava,Python,Rubyとありますが、最終的にパッケージ化して他環境で実行することを想定し、標準で実行環境(JRE)がWindowsに備わっているJavaを選定しました。
Eclipseのインストール
IDEとしてEclipseを使用するため、下記リンクからWindows 64bit版のFullEditionをダウンロードします。
https://mergedoc.osdn.jp/
ChromeDriverのインストール
下記リンクからChromeDriverの『chromedriver_win32.zip』をダウンロードします。ダウンロードしたZipはCドライブ直下に解凍します。
https://chromedriver.chromium.org/downloads
バージョンが95.~、96.~のようになっていますが、これは使用PCのGoogleChromeのバージョンと合っているものをダウンロードしてください。
C:\Program Files (x86)\Google\Chrome\Application にある数字フォルダがGoogleChromeのバージョンです。
Gradleプロジェクトの作成
Selenium関連のクラスライブラリと依存関係を自動インストールするためにGradleプロジェクトを作成します。
EclipseのUI上から新規作成できますが、なぜか出来上がったプロジェクト階層が想定と違ったので、今回はGradleのコマンドを実行する方法を選びます。EclipseからGradleプロジェクトが作成できる方は本節をスキップしてください。
下記リンクから『Complete』を選択し、Gradleのパッケージをダウンロードします。
https://gradle.org/install/#manually
ダウンロードしたzipをCドライブ直下に解凍します。
Windowsの設定 > システム > システムの詳細設定 > 環境変数 を開き、ユーザー環境変数の『Path』にGradleのbinフォルダのパスを新規追加します。
コマンドプロンプトで下記コマンドが正常実行されれば成功です。
エラーになる場合は、環境変数を変えているので端末再起動をお試しください。
gradle -v
Eclipseの『pleiades\workspace』フォルダ直下に新規フォルダ『TestSelenium』を作成し、作成したフォルダパスでコマンドプロンプトを開きます。
下記コマンドを実行し、画像の通りオプションを選択していきます。
gradle init
Eclipseの『ファイル・システムからプロジェクトを開く』のインポート・ソースに先ほどのフォルダを指定して、完了を選択します。
Gradleビルドスクリプトの記述
作成されたプロジェクトから『build.gradle』を選択し、下記の通り編集します。
// Javaプラグインを使用する宣言
apply plugin: 'java'
// クラスライブラリをダウンロードするリポジトリを指定
repositories {
jcenter()
}
// selenium-javaの所属するグループ、及びダウンロードするseleniumバージョンを指定
dependencies {
testCompile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.0.0'
}
Eclipseのファイル > インポート を開き、Gradleプロジェクトを選択します。
プロジェクト・ルート・ディレクトリーにTestSeleniumを指定し、『次へ』を選択します。
『ワークスペース設定を上書き』のチェックを外し、完了します。
ここまでの操作でselenium関連のライブラリをオンラインリポジトリからインストールするためのGradle設定が完了しました。
次に src > test > java > TestSelenium > AppTest.java を下記の通り編集します。
package TestSelenium;
public class AppTest {
public static void main(String[] arg) {
// ChromeDriverのパスを指定
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");
// ChromeDriverのインスタンス作成(Chrome起動)
WebDriver driver = new ChromeDriver();
// 指定したURLに遷移する
driver.get("https://note.com/avakansai/");
}
}
ChromeDriverクラスを含むライブラリは手動でクラスパスに追加していませんが、Gradleによって自動追加されているためインポートすることができます。
テストコード実行
AppTest.javaを実行します。
下記のような警告が発生します。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
どうやらSeleniumとは直接関係のないログ出力用のライブラリ『slf4j-api-1.7.25.jar』で発生しているようですが、これとセットのような『slf4j-simple-1.7.25.jar』を追加することで解決するという記事を見つけましたので試してみます。
クラスパスの『外部JARの追加』を開き、ダウンロードしてきた『slf4j-simple-1.7.25.jar』を選択します。
再度実行します。
警告を解消して指定URLをブラウザで開くことができました!
環境セットアップでだいぶ長くなってしまったので、本記事はここまでとします。続きはそんなに長くないですが、次回はSeleniumAPIのサンプル実装と、取得した情報のExcel連携をやりたいと思います!
~会社紹介~
“安定したスタートアップ”を経験できる、アバナード関西の面白さ
記事が皆さんのお役に立てましたらいいねやフォローをお願いします。
内容に関するご指摘や、その他何かございましたら下記に連絡ください。
アバナード関西 井関 純一
junichi.iseki(@)avanade.com / Linkedin