Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Selenideを使ってみた 〜 ブラウザテスト自動化 〜

Selenideを使ってみた 〜 ブラウザテスト自動化 〜

Selenideを使ってみた 〜 ブラウザテスト自動化 〜

snowhiro

May 20, 2017
Tweet

Other Decks in Technology

Transcript

  1. αϯϓϧΛ࣮ࢪ @Test public void yahooͷݕࡧ() { Selenide.open("https://www.yahoo.co.jp/"); $("#srchtxt").setValue("selenide"); $("#srchbtn").click(); $(".resultNum").shouldHave(text("໿1,150,000݅"));

    } ᶃର৅ͷ63-Λࢦఆͯ͠ϒϥ΢βΛىಈ ᶄࢦఆϑΟʔϧυ΁஋Λઃఆ͢Δɻ ᶅཁૉΛΫϦοΫ ᶆϖʔδભҠޙͷཁૉͷத਎ΛνΣοΫ
  2. !5FTU QVCMJDWPJEZBIPP@TFMFOJEFΛݕࡧ \  4FMFOJEFPQFO IUUQTXXXZBIPPDPKQ    lTSDIUYU

    TFU7BMVF TFMFOJEF    TSDICUO DMJDL    SFTVMU/VN TIPVME)BWF UFYU ໿  ݅  ^ !5FTU QVCMJDWPJEZBIPP@TFMFOJVNΛݕࡧ \  4FMFOJEFPQFO IUUQTXXXZBIPPDPKQ    lTSDIUYU TFU7BMVF TFMFOJVN    TSDICUO DMJDL    SFTVMU/VN TIPVME)BWF UFYU ໿  ݅  ^ ཁૉͷࢦఆ͸มΘΒͳ͍ ೖྗ஋౳ͷΈ͕มΘΔͷΈ
  3. public class SrchPage { @FindBy(id = “srchtxt") private SelenideElement srchTxt;

    public void setSrchTxt(String text) { this.srchTxt.setValue(text); } @FindBy(id = "srchbtn") public SelenideElement srchBtn; public ResultPage clickSrchBtn() { ɹ srchBtn.click(); return page(ResultPage.class); } } ϖʔδΦϒδΣΫτΛར༻ͨ͠৔߹ ϖʔδΦϒδΣΫτͷ࡞੒ ৚݅ೖྗଆʣ ᶃ!'JOE#Zʹͯର৅ͷཁૉΛϑΟʔϧυʹ ࢦఆ͢Δɻ ᶄ஋ͷऔಘɾઃఆ͸ΞΫηοαʔΛܦ༝͠ɺ 4FMFOJEF&MFNFOUͷཁૉ͸Ӆṭ͢Δɻ ᶅ࣍ͷϖʔδ΁ભҠ͢Δ৔߹ʹ͸࣍ͷϖʔδ ΦϒδΣΫτͷΠϯελϯεΛฦ٫͢Δ
  4. public class ResultPage { @FindBy(className ="resultNum") private SelenideElement resultNum; public

    String getResultNum() { return resultNum.should(exist).getText(); } } ᶃ஋ͷऔಘ͸ΞΫηοαʔΛܦ༝͠ɺ 4FMFOJEF&MFNFOUͷཁૉ͸Ӆṭ͢Δɻ ϖʔδΦϒδΣΫτΛར༻ͨ͠৔߹ ϖʔδΦϒδΣΫτͷ࡞੒ ݁Ռը໘ଆʣ
  5. @Test public void yahooͷݕࡧ_ϖʔδΦϒδΣΫτ() { SrchPage srchPage = Selenide.open(“https://www.yahoo.co.jp/“ ,

    SrchPage.class); srchPage.setSrchTxt("selenide"); ResultPage resultPage = srchPage.clickSrchBtn(); assertThat(resultPage.getResultNum()) .isEqualTo("໿1,150,000݅"); } ϖʔδΦϒδΣΫτΛར༻ͨ͠৔߹ ςετέʔεΛهड़ PQFOҎ֎ͷTFMFOJEFͷϝιουΛӅṭ͍ͯ͠·͢ɻ ೖྗϑΟʔϧυ౳ʹมߋ͕ೖͬͯ΋มߋର৅͸ϖʔδ ΦϒδΣΫτͷΫϥεͷΈͰςετέʔεʹ͸Өڹ͕ ग़ͳ͍Α͏ʹͳΓ·͢ɻ
  6. public interface Menu { default void logout() { Selenide.$("#logout-link").click(); }

    } public class MainPage implements Menu { @Test public void ϝΠϯॲཧ() { // ϩάΞ΢τ logout(); } } ͪΐͬͱϝϞɹͦͷ̍ σϑΥϧτϝιου ػೳΛར༻