diff --git a/selenide_series/.idea/modules.xml b/selenide_series/.idea/modules.xml new file mode 100644 index 0000000..fefa14c --- /dev/null +++ b/selenide_series/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/selenide_series/readme.md b/selenide_series/readme.md index db4d009..9203ae0 100644 --- a/selenide_series/readme.md +++ b/selenide_series/readme.md @@ -11,3 +11,9 @@ Maven ---> 20 ''' + +PageObjects --> + +vytvořit složku pages v test/Java, --> Mark Directory -->Test Sources Root (pouze zě nemám java kde vznikají package) + +Pak si v testu na importovat pages object např: import pages.HomePage; \ No newline at end of file diff --git a/selenide_series/selenide_series.iml b/selenide_series/selenide_series.iml new file mode 100644 index 0000000..becf62c --- /dev/null +++ b/selenide_series/selenide_series.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/selenide_series/src/test/java/pages/HomePage.java b/selenide_series/src/test/java/pages/HomePage.java new file mode 100644 index 0000000..b06b22e --- /dev/null +++ b/selenide_series/src/test/java/pages/HomePage.java @@ -0,0 +1,40 @@ +package pages; + +import com.codeborne.selenide.ElementsCollection; +import com.codeborne.selenide.Selenide; +import com.codeborne.selenide.SelenideElement; +import com.codeborne.selenide.WebDriverRunner; +import org.openqa.selenium.By; + +import static com.codeborne.selenide.Selenide.*; +import static org.testng.AssertJUnit.assertEquals; + +public class HomePage { + public HomePage open() { + Selenide.open("https://practice.sdetunicorns.com/"); + return this; + } + // pomocí ALT+Enter si vytvoříme v červeném (jako importy) řádku com.codeborne.selenide.SelenideElement + // pak s toho vytvoříme import com.codeborne.selenide.SelenideElement; + //pak mužeme odmazat níže část s com.codeborne.selenide. + public SelenideElement getStaredBtn() { + return $(By.id("get-started")); + } + public SelenideElement headingTitle() { + return $("h1"); + } + public SelenideElement logoLink() { + return $(By.xpath("//*[@id=\"zak-masthead\"]/div/div/div/div[1]/div/a/img")); + } + //zde vracíme kolekci elementu tak proto ElementsCollection + public ElementsCollection linksList() { + return $$("#zak-primary-menu li[id*=menu-item]"); + } + + public void assertUrl(String expectedURL) { + String url = WebDriverRunner.url(); + assertEquals(url, expectedURL); + } + +} + diff --git a/selenide_series/src/test/java/specs/HomeTest.java b/selenide_series/src/test/java/specs/HomeTest.java index 08d1bf0..c7647f3 100644 --- a/selenide_series/src/test/java/specs/HomeTest.java +++ b/selenide_series/src/test/java/specs/HomeTest.java @@ -1,11 +1,13 @@ package specs; + import com.codeborne.selenide.CollectionCondition; import com.codeborne.selenide.ElementsCollection; import com.codeborne.selenide.WebDriverRunner; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.testng.annotations.Test; +import pages.HomePage; // pro každou novou funkci pomocí AlT + Enter můžeme přidat hvězdičku a ušetříme řádky import java.util.List; @@ -15,13 +17,18 @@ import static org.testng.Assert.assertTrue; import static org.testng.AssertJUnit.assertEquals; public class HomeTest { + HomePage home = new HomePage(); @Test public void testPageUrlAndTitle() { - open("https://practice.sdetunicorns.com/"); + // home page z page objects + home + .open() // můžeme i řetězit + .assertUrl("https://practice.sdetunicorns.com/"); + // test očekávané url, String url do této proměné jsme vložily url - String url = WebDriverRunner.url(); - assertEquals(url, "https://practice.sdetunicorns.com/"); + // *page* + // home.assertUrl("https://practice.sdetunicorns.com/"); // test titulu stránky String title = title(); @@ -32,8 +39,8 @@ public class HomeTest { public void testInteractingWithElements() { open("https://practice.sdetunicorns.com/"); - // klikneme na tlačítko podle id - $(By.id("get-started")).click(); + // klikneme na tlačítko podle id * page_object * + home.getStaredBtn().click(); // zkontrolujeme očekávanou URL máme dva způsoby String url = WebDriverRunner.url(); @@ -41,11 +48,12 @@ public class HomeTest { assertTrue(url.contains("get-started")); // najdeme objeckt podle cssSelector a zkontrolujeme jeho text ( zde je to třída h1 class ) - $("h1") + // *pages object + home.headingTitle() .should(text("Think different. Make different.")); - // Ověříme logo pomocí xpath - $(By.xpath("//*[@id=\"zak-masthead\"]/div/div/div/div[1]/div/a/img")) + // Ověříme logo pomocí xpath * pages* + home.logoLink() .should(be(visible)); } @@ -58,7 +66,7 @@ public class HomeTest { // vytvoříme si pak proměnou linklists //za li[id. . .] už je id na položky v menu List expectedLinks = List.of("Home", "About", "Shop", "Blog", "Contact", "My account"); - ElementsCollection linkLists = $$("#zak-primary-menu li[id*=menu-item]"); + ElementsCollection linkLists = home.linksList(); // vypíšeme do console položky menu System.out.println(linkLists.texts()); diff --git a/selenide_series/target/test-classes/pages/HomePage.class b/selenide_series/target/test-classes/pages/HomePage.class new file mode 100644 index 0000000..7cfe7f9 Binary files /dev/null and b/selenide_series/target/test-classes/pages/HomePage.class differ diff --git a/selenide_series/target/test-classes/specs/HomeTest.class b/selenide_series/target/test-classes/specs/HomeTest.class index 7d949b2..4e2206e 100644 Binary files a/selenide_series/target/test-classes/specs/HomeTest.class and b/selenide_series/target/test-classes/specs/HomeTest.class differ diff --git a/selenide_series/target/test-classes/specs/UploadTest.class b/selenide_series/target/test-classes/specs/UploadTest.class index 003e30e..673b109 100644 Binary files a/selenide_series/target/test-classes/specs/UploadTest.class and b/selenide_series/target/test-classes/specs/UploadTest.class differ