From f5db7f2a1345fd57366226255db409fa5d839090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Ka=C5=88ka?= <124378142+LukasKanka@users.noreply.github.com> Date: Wed, 16 Aug 2023 21:12:54 +0200 Subject: [PATCH] pages objects --- selenide_series/.idea/modules.xml | 8 ++++ selenide_series/readme.md | 6 +++ selenide_series/selenide_series.iml | 10 +++++ .../src/test/java/pages/HomePage.java | 40 ++++++++++++++++++ .../src/test/java/specs/HomeTest.java | 26 ++++++++---- .../target/test-classes/pages/HomePage.class | Bin 0 -> 1655 bytes .../target/test-classes/specs/HomeTest.class | Bin 3334 -> 3194 bytes .../test-classes/specs/UploadTest.class | Bin 1166 -> 1319 bytes 8 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 selenide_series/.idea/modules.xml create mode 100644 selenide_series/selenide_series.iml create mode 100644 selenide_series/src/test/java/pages/HomePage.java create mode 100644 selenide_series/target/test-classes/pages/HomePage.class 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 0000000000000000000000000000000000000000..7cfe7f9e233e28c56c5ccbd62ec7e820f75a87e8 GIT binary patch literal 1655 zcmb7E+foxj5IqASn}iiGigyJ8HHm}~?-~#V@mBFtBKSc0Fv(6OqkD_9ROZC6t<~%=FB5pYA?$W`6wq_8q`oJjq}P!xj=YMv!Efcq?`UcZFZ$&ns_b zRWl@)l&|z1hT&X(D}@xpOkL|nber==D5_djocG8hAW|3`Q;3HV$Bn zVan`P14mZKL-I(v(pQe;8?nKV2pZC7n9P-X6>R8G`L&YCI>9hnle!pb5o+mVki{Vj zhiy#a2*Z&etZ@VIUc}fe- zp7eDog;P{XebGRlG0;;CO9N~AXTY-zS2-_i-&M}?%qQ`#=!ru^42N_1 zy-La8GOk#-YU3KN$Fk5e(xm2lQ6xkCWRs-KV2k!@{e4ro5yOQ6o$LkAZ&|p>FxC(? z8SzJfCtr|7%3UK}GmMv&FP}BNiVRLAlgETLlRZZ8UKtB8Mw0o6yRYzSKLC^(yrL-w0;rDk3h5`$G;m zG>YwTw`mSxRDNjCX-a4FW!dz*=jt+KHiBkYl@F9D;lM6y3&s;?af4nT^RqyDM3Tl^ zwBj@~nnwy>!M>0&gxfTl&w!0mdu%&k3Cpx1WZa?A1Ye`se6zAv3+cjVGCSesr31z& z&v+k%)rDB0=dc5DC5A|6$6Gkq!qFZ`r-sQsfOHq&UKij}43Ny8Y~l2u(Z~9tlildm zZgemGbPF>B(x2=D=%ru7{kZ;K`g1K@_%r=fUvw}1Ix*Af{sr+gOiX23xcGGbVhfAC oBN%IcnMH!0kTlMMJ+X{J?F z2;T65w|G>%qNt#+poX9e9$Y;616<2DbuC|f(pMi`?#Xn4$ivK>GyB`$_wBvUIT`$W zz53%n-(3Z;6JHh8SV4xuP`#w5jeKlR?y#|!Rw`sjZg{|DtmCN0Z3M|L87UhwZRAY` z=RBbqyz!fJ`>kXjhlU!$AvA9m2SdFw>NwV;p24l>^Tx8dZ#lyd z2*(%oRXvu`v*}pETwchg`#bil*nkEZjT}vAE@oR>T;_tAAs>FyxCO7^cCpG1h+mms z)Uxrm4d}3()mt7rIl2&K;Az85nEJ9YH)N96NLX|$_2RfgtB#>tMi0jwsA6a@9%&X= z9KPzU*e2snj=RuY`CC`~DbS>#m%&3!(L7O^#+-_N+%01V#{ljTKRX6IgBX%A%yBPv ziI5a-usrPM*i-Q^Z|HMW;IvhXjQhkHsg1?OHK|P*#RSLw*em{$hLjklI1-o^{mx{w zMX;Y^#v)KMxpXeRkUiwaD3Tlp@Sym^+2b3??bC|2b@z7a2TwBr?qO=0n;t5y6WJDso6sKi;RUW_R|RmCa1ZV|j8 z8kAw>7>XQkL5Q@n`1S9~1y=CDK}Vj^Lx-8(PFlNAMenz1Hvp*;^F}U#MZSleyae~R zP%lu-fp_SwR`P2o&yRO$&uu(T<2~9jyiZ(?3fDpUT3U6HZ=jao)%+#Y7Rm_5JGGWF zLN_>rlmj~VPSnGVAaRD^#YWVkwW3jL^Q>ujsk2S^fV4iOEX(;v73GhwE1#!|EafT9 zUq;xLk6gxPhH?R0NPc?>eP!&lBO}f$7)?srSQ+Dq%b0Xv#t!VW0~hf?84s;RZkTQ- zt3a5fI^n}+1kg>kwjzpcbR)K7H+nINzW)?3MFkYBE(NfIAh%X<=6VG`(8@{3p-KhX zquQ)Cr#+_4Yl~%M;LSypk`gUnOO){DjAdA=OfCck zDA0&qbn^n(g+{t^n=nR~KaL(uV32N?HPVPJz1HpkRrCoyr8YOB4QKHgwYG~!^Ev&K a@CD(m@z|(ygtBAjD0cIB&J)rB_T|66r44of delta 1438 zcmZ`(TT>iG7(KnW8D=|N1{QEhWCJ9?vg>3`L=E>PlBf_NAV`qtusgC7_7--C0WZW` zjCZlsT)ah%@xdpODx6ql^u;R6U*Nm%R_TLf`C$3YE=f#T*4B1^)8F~}ob&bc{8fJ{ zsQmQzH`f64C}N&EG3t^f22U<;WY>NTmRF)mg33{i z8it)k#1F23=wWqR6x5%Ry0O4!TMg>Et6 zZVSlhC0(hQL)`BW4={9-Lh*;Yp1M`(lQ75-qSl0{t@nwq+&knr_H!J-{o-eLT#n*F zj$w?5CeQSwjE5NZXj*ut-%R#2t>_EUj9#!(hMsJi)sp7%fB$D)~Jk8n)mFsYq07>3%!E>D;E&ZCUWc$ALxKrTZka)hb} z=5kAxjK^tlJeAAKn4>73&dtl9_Dh4gtfeOi@C1W0vK-PAiQH1w@*@RP!cmR|q=n@@ z(+~+qaSV$ju7ysm?|K7!eF49P zB?-qlp2P`p#J9VA1y4zMn&TNf%g|nY=X!mr_|ezsKZ)lgJkRk0UKGFk_VQYsa$die z8Cu)K1#gSDeNw_JLYFl8G+uMIcwL;82IUpJ$?+E67QaYGYb3nGP+rIziGt=dWx^;} zS4QM@wz>uv-4Vb8>Jof33VPCLW;A=lUxTev;KI8!I%%K^@6pIh0KAVg^u%zMvaVur znr1hx1y#vLnT?9!4krrOXc&p8w^MX;$JHQ}0X4*3hceWo0u6NYwvxkbMVe4)t4*3R zBCp0dqN|2Ph;u}Bp6VT89~5PLctge|+SBoNs3=1X*=VxSb`=qZlBUoGVyiapR(ovp zdA>z_+O6)hF*JS^54bR;9<(t^6{XB&jN6#nOx@JKlSBjCiK+!ETIu`Hjz&c27ey!C z!2O6}j4qthvD%WHO)ItNCKIcUms=ftbi={-6nUtyzvN&>omC%Gbv2&DSUN&18+<@a^1xPY=TU2C&}$b06l21=<~P(gLKFD z(V-8aj}$vv!zJQPtpRl4V|+qV8wh;?pOTX>`T302-1waEj<*u(BB4sTiff$?3=9ko49*+54l)^VFqkqjsArUv6ck(O>lYLyCYNL;r|K1_q?VNC zWhUnrQ=>us-AkC_^oq=&9kio=Y2_!+%3=G^1RzQ*m zqJY7g!3M}HvXc#~X^uesObku{BAhai delta 184 zcmYj}y$-=p0ENGMtHdQDg1K`S3-w>6FCg(=mirLqPLd81tJUL3#Az8U-^t1Oxwv!N zJ>KOF$jAzJw?T`Uf7#MMgXlQLDnT@aG{r=2A~n)5zG8|xo{Los9TsBuTVTmb&ahT$ lNqpWo