SelenideでUIテストを簡単に実施する
Published in
Dec 23, 2020
アソビュー! Advent Calendar 2020 の21日目です
アソビュー!のバックエンドエンジニアをしているグエンです
はじめに
UIテストといえばSelenium、SeleniumIDE、Autify、Datadogなどで複数の方法がありますが今回Selenideを紹介したいと思います。
Selenideとは
SelenideはSeleniumをラッパーするフレームワークです
Selenideの良いところ
- OSSなので無料です
- ブラウザの閉じ方、タイムアウト、スクリーンキャプチャ、テストレポートとかを考える必要はなくテストに集中できる
- Page Objectsがサポートされる
- Java以外Groovy、Scalaでも実施できる
Selenideのよく使うAPI
- 要素を選択する
$(By.tagName("button")); //単一のButton要素を選択する
$$(By.tagName("button")); //Button要素のコレクションを選択する// 他にもcom.codeborne.selenide.Selectorsクラスに定義されたセレクタが利用できます。
- アクションを起こす
$(By.tagName("button")).click();
$(By.tagName("button")).doubleClick();
$(By.xpath("/html/body/section[1]")).pressEnter(String);
$("#payment-method").selectOption(String text);
- アサーション
状態チェックもSelenideElementのインスタスから呼び出せる
Conditionは SelenideElementの状態を示すオブジェクトで、com.codeborne.selenide.Condition
クラスに定義されています。
$(By.tagName("button")).should(Condition);
$(By.tagName("button")).shouldBe(Condition);
$(By.tagName("button")).shouldHave(Condition);
$(By.tagName("button")).shouldNot(Condition);
$(By.tagName("button")).shouldNotBe(Condition);
$(By.tagName("button")).shouldNotHave(Condition);
- 設定
com.codeborne.selenide.Configuration
クラスのフィールドを設定することで、テストの設定を変えることができます。
//デフォルトではFirefox。特にプロパティの設定は不要
Configuration.browser = WebDriverRunner.FIREFOX;
// タイムアウトの時間を5000ミリ秒にする(デフォルト:4000ミリ秒)
Configuration.timeout = 5000;
// レポート用のディレクトリを変更する
Configuration.reportsFolder = "/var/selenide";
UIテストを実施してみましょう
1. テストのプロジェクトを初期化する
- Selenium UI Testingのpluginを導入する。
Selenium UI TestingはIntelliJ IDE (V2020.2 Ultimate Edition)からリリースされたPluginです。このPluginを使うことで、Browser Driverやライブラリーの設定が必要がなくなる。
- Testプロジェクトを開始する
Selenium UI Testingのpluginを導入した後で、New Project ウィンドウズにSeleniumというメニューが追加されます。
Testプロジェクトを開始するには以下の画像のように設定すれば良いと思います。
- どんなライブラリーが必要なのか?
Allure Framework:テストが終わった後でレポートを自動的に作成されるため。
Selenide:Selenideより提供されてる便利なAPIを利用できるために
Selenium:コアとしてはSeleniumのライブラリーなので、これは一番大切です
- 最後はプロジェクト情報を入力する
2。テストケースを作成してみます。
- Page Objectsを作成する
一つのHTMLページに対して以下のようなPage Objectのクラスを作成しておいたら、どのテストケースでも使えることですごく便利だと思います。
HTMLページの構築が変更された場合でも一つのクラスを修正することだけで影響範囲が大きくないです。
- テストケースを実装してみます
DOM操作はPage Objectに纏められたので、テストメソッドにはインプットとアウトプット確認を集中できる
3。テスト結果を確認する
- テストレポートはWebUIで確認できます
- IDEのConsoleでも簡単にログを調査できます
スクリーンキャプチャとHTMLソースコードが保存される
最後に
以上となりますが、もっと良いやり方があれば教えていただければありがたいと思います
アソビューでは現在多方面で積極採用をしていますので、興味がありましたらお気軽にご応募いただければと思います。