概要
GolangのWebDriverであるAgoutiを使用して、UIテストを自動化する方法を紹介します。
本記事ではID/パスワードでログインを行うようなサイトでのデモを紹介します。
AgoutiではUIテストの自動化だけでなく、Webスクレイピング的に情報取得の自動化もできます。
物によってはブラウザゲームの自動化やログインボーナスの収集ツールのようなものも作れますが、利用規約等に従って活用するようにしましょう。
前提条件
- この記事内ではWindows環境前提での紹介とします。
- Goバージョン1.18.4
- ブラウザはChromeを前提とします。
事前準備
Chromeのバージョンに従って、ChromeDriverをインストールする。
chromedriver から確認したChromeバージョンに対応したChromeDriverをダウンロードしておく。
Chromeのバージョンが更新されたときにChromeDriverのバージョンとずれて動かなくなるケースがあるため、動かなくなった場合はバージョンの見直しを行いましょう。
ChromeDriverは以下で作成するソースと同じディレクトリに置くことでそこのChromeDriverが使用されますが、PATHを通しておくことで都度ChromeDriverを配置しなくても良くなるので、複数のテストコードを記述する場合環境変数に登録しておくことをおすすめします。
実装
デモ用サイト
テスト用デモサイトとして公開されている以下のサイトを使用させていただきます。
実装内容
複数ソースに渡るため、githubに公開しておりますのでご参照ください。
- loginDemo
- ユーザ1人の情報を渡してログインする処理を実行します
- multiLoginDemo
- 複数ユーザの情報を渡してその分だけブラウザを開き、ログインする処理を実行します
よく使う(かも知れない)スニペット
要素を探し出して文字列を入力
page.FindByID("email").Fill("test@example.com")
要素を探し出してクリック
page.FindByID("btnLogin").Click()
スクリーンショットを撮る
引数にはファイル名を指定します(すでに同じ名前のファイルがあれば上書きします)
fileName := "screenshot.png"
page.Screenshot(fileName)
任意のスクリプトを実行する
サンプルではwindow.alert()
を呼んでいますが、
フロント処理で実装されている処理を発火させることもできます。
script := "window.alert('test!!!')"
page.RunScript(script, nil, nil)
ドキュメント等
github
goDoc