Selenide:Selenium WebDriverでの便利なテスト

多くの人がSelenium WebDriverについて聞いたことがある-受け入れ/統合テストを書くための最も人気のあるツールの1つです。





Seleniumを使用して、ブラウザーを最初に初期化し、最後に閉じ、各テストの終了後にスクリーンショットを撮るために、時々同じコードを記述する必要があることにすぐに気付きました。 ( pruflink )。



したがって、この繰り返しコードを個別のライブラリに分離することにしました。 それでセレニド生まれました





セレン化物とは



Selenideは、Selenium WebDriverのラッパーであり、ブラウザーでの大騒ぎではなく、ロジックに焦点を当てて、テストを記述するときにすばやく簡単に使用できます。



以下にテストの例を示します。 ご覧のとおり、コードは最小限です。 「open」と呼ばれ、ブラウザが開きました。



@Test public void testLogin() { open("/login"); $(By.name("user.name")).sendKeys("johny"); $("#submitButton").click(); waitUntil(By.id("username"), hasText("Hello, Johny!")); $("#username").shouldHave(cssClass("green-text")); assertThat($("#insuranceDetailsHeader").getText(), equalTo(" ")); assertThat($$("#paymentScheduleTable tr").size(), equalTo(7)); }
      
      







openメソッドが呼び出されると、Selenideはブラウザ自体を起動し、 localhost :8080 /ログインページを開きます(もちろん、ポートとホストが構成されます)。 また、ブラウザが最後に閉じるように注意します。



特別なセレン化物



Selenideは、Selenium WebDriverチームでは実行できないアクションのための追加メソッドを提供します。 これは、ラジオボタンの選択、ドロップダウンリストからのアイテムの選択、スクリーンショットの作成、ブラウザキャッシュのクリアなどです。



 @Test public void canFillComplexForm() { open("/client/registration"); setValue(By.name("user.name"), "johny"); selectRadio("user.gender", "male"); selectOption(By.name("user.preferredLayout"), "plain"); selectOptionByText(By.name("user.securityQuestion"), "What is my first car?"); followLink(By.id("submit")); takeScreenShot("complex-form.png"); } @Before public void clearCache() { clearBrowserCache(); }
      
      







そして、Ajaxの疑問は際立っています。Ajaxを使用するアプリケーションをテストするときは、何かを待つコードを作成する必要があります(ボタンが緑色に変わるとき)。 Selenideは、さまざまなイベントが発生するのを待つ豊富なAPIを提供します。

 @Test public void pageUsingAjax() { waitFor("#username"); waitUntil("#username", hasText("Hello, Johny!")); waitUntil("#username", hasAttribute("name", "user.name")); waitUntil("#username", hasClass("green-button")); waitUntil("#username", hasValue("Carlson")); waitUntil("#username", appears); waitUntil("#username", disappears); }
      
      







やってみたい、どこから始めればいい?



1.プロジェクトにSelenide依存関係を追加します。

 <dependency> <groupId>com.codeborne</groupId> <artifactId>selenide</artifactId> <version>1.6</version> </dependency>
      
      







2.いくつかのクラスをインポートします。

 include static com.codeborne.selenide.Navigation.* include static com.codeborne.selenide.DOM.*
      
      





できた! edren-loaf、テストを書きます!



誰も本当にこれを使用していますか?



はい、当社では、 Selenideをいくつかの実際のプロジェクトで使用しています。





そのため、プロジェクトが粗雑ではなく、実際に使用および保守されていることを確認できます。

また、Selenideを使用する小さなリファレンスオープンソースプロジェクト: Hangman gameもあります。



この名前はどこから来たのですか-Selenide?



Seleniumライブラリーの名前は、化学元素(Selenium)に由来します。 セレン化物は、セレンと他の元素との化合物です。



ここにあります:





健康への化学!



UPD 2013年3月、Selenide 2.0のバージョンがリリースされ、APIが大幅に更新されました。 セレン化物の使用は、さらに簡単で便利になりました。



また、ロシア語のウェブサイトru.selenide.orgも立ち上げました。






All Articles