Lapas objekta modelis (POM) & Lappu fabrika selēnā apmācība

Satura rādītājs:

Anonim

Kas ir lapas objekta modelis?

Page Object Model (POM) ir dizaina modelis, ko populāri izmanto testa automatizācijā, kas izveido objektu krātuvi tīmekļa lietotāja saskarnes elementiem. Modeļa priekšrocība ir tā, ka tas samazina koda dublēšanos un uzlabo testa uzturēšanu.

Saskaņā ar šo modeli katrai lietojumprogrammas tīmekļa lapai jābūt atbilstošai lapu klasei. Šī lappušu klase identificēs šīs tīmekļa lappuses WebElement un satur arī lappušu metodes, kas veic darbības šajās WebElement. Šo metožu nosaukums jānorāda atbilstoši uzdevumam, ko tās veic, ti, ja iekrāvējs gaida maksājumu vārtejas parādīšanos, POM metodes nosaukums var būt waitForPaymentScreenDisplay ().

Šajā apmācībā jūs uzzināsiet

  • Kāpēc lapas objekta modelis?
  • POM priekšrocības
  • Kā ieviest POM?
  • Kas ir Page Factory?
  • Guru99 TestCase ar Page Factory koncepciju
  • AjaxElementLocatorFactory

Kāpēc lapas objekta modelis?

UI automatizācijas palaišana Selenium WebDriver NAV grūts uzdevums. Jums vienkārši jāatrod elementi, jāveic darbības ar to.

Apsveriet šo vienkāršo skriptu, lai pieteiktos vietnē

Kā jūs varat novērot, viss, ko mēs darām, ir elementu atrašana un šo elementu aizpildīšanas vērtības.

Šis ir mazs skripts. Skriptu uzturēšana izskatās viegli. Bet ar laiku testa komplekts pieaugs. Pievienojot kodam arvien vairāk rindiņu, viss kļūst grūts.

Galvenā skriptu uzturēšanas problēma ir tā, ka, ja 10 dažādi skripti izmanto vienu un to pašu lapas elementu, ar jebkādām izmaiņām šajā elementā ir jāmaina visi 10 skripti. Tas ir laikietilpīgi un pakļauti kļūdām.

Labāka pieeja skriptu uzturēšanai ir izveidot atsevišķu klases failu, kas atrastu, aizpildītu vai pārbaudītu tīmekļa elementus. Šo klasi var atkārtoti izmantot visos skriptos, izmantojot šo elementu. Ja nākotnē mainīsies tīmekļa elements, izmaiņas jāveic tikai vienā klases failā, nevis 10 dažādos skriptos.

Šo pieeju sauc par lapas objekta modeli selēnā. Tas palīdz padarīt kodu vieglāk lasāmu, uzturamu un atkārtoti lietojamu.

POM priekšrocības

  1. Lapa Object Design Pattern saka, ka darbības un plūsmas lietotāja saskarnē ir jānošķir no verifikācijas. Šī koncepcija padara mūsu kodu tīrāku un viegli saprotamu.
  2. Otrais ieguvums ir tas, ka objektu krātuve nav atkarīga no testa gadījumiem, tāpēc mēs varam izmantot to pašu objektu krātuvi citam mērķim ar dažādiem rīkiem. Piemēram, mēs varam integrēt lapas objekta modeli selēnā ar TestNG / JUnit funkcionālajai pārbaudei un vienlaikus ar JBehave / gurķi pieņemšanas pārbaudei.
  3. Kods kļūst mazāks un optimizēts, pateicoties atkārtoti izmantojamām lapu metodēm POM klasēs.
  4. Metodes iegūst reālākus nosaukumus, kurus var viegli kartēt ar lietotāja saskarnē notiekošo darbību. ti, ja pēc noklikšķināšanas uz pogas nokļūstam mājas lapā, metodes nosaukums būs tāds pats kā 'gotoHomePage ()'.

Kā ieviest POM?

Vienkāršs POM:

Tā ir Page objekta modeļa ietvara pamatstruktūra, kurā visi AUT tīmekļa elementi un metode, kas darbojas ar šiem tīmekļa elementiem, tiek turēti klases failā. Testa uzdevumam, piemēram, pārbaudei, vajadzētu būt atsevišķai kā daļu no testa metodēm.

Pilnīgs piemērs

TestCase: dodieties uz Guru99 demonstrācijas vietni.

1. darbība. Dodieties uz Guru99 demonstrācijas vietni
2. solis) Šajā mājas lapā pārbaudes tekstu "Guru99 Banka" ir klāt
3. solis. Piesakieties lietojumprogrammā
4. darbība. Pārbaudiet, vai sākumlapā ir teksts kā “Manger Id: demo”

Lūk, mums ir darīšana ar 2 lappusēm

  1. Pieteikšanās lapa
  2. Mājas lapa (parādīta pēc pieteikšanās)

Attiecīgi mēs izveidojam 2 POM selēna klasēs

Guru99 pieteikšanās lapa POM

paku lapas;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;publiskā klase Guru99Login {WebDriver draiveris;Pēc lietotāja99GuruName = By.name ("uid");Pēc paroles99Guru = By.name ("parole");Pēc titleText = By.className ("barons");Pēc pieteikšanās = By.name ("btnLogin");public Guru99Login (WebDriver draiveris) {this.vadītājs = draiveris;}// Iestatiet lietotāja vārdu tekstlodziņāpublic void setUserName (virkne strUserName) {draiveris.findElement (lietotaja99GuruName) .sendKeys (strUserName);}// Iestatiet paroli paroles tekstlodziņāpublic void setPassword (virkne strPassword) {draiveris.findElement (parole99Guru) .sendKeys (strPassword);}// Noklikšķiniet uz pieteikšanās pogaspublic void clickLogin () {draiveris.findElement (login) .klikšķis ();}// Iegūstiet pieteikšanās lapas nosaukumupubliskā virkne getLoginTitle () {atgriezties draiveris.findElement (titleText) .getText ();}/ *** Šī POM metode testa gadījumā tiks pakļauta pieteikšanās lietojumprogrammā* @param strUserName* @param strPasword* @return* /public void loginToGuru99 (String strUserName, String strPasword) {// Aizpildiet lietotāja vārduthis.setUserName (strUserName);// Aizpildiet parolithis.setPassword (strPasword);// Noklikšķiniet uz pogas Pieteiktiesthis.clickLogin ();}}

Guru99 mājas lapa POM selēnā

paku lapas;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;publiskā klase Guru99HomePage {WebDriver draiveris;By homePageUserName = By.xpath ("// tabula // tr [@ class = 'title3']");public Guru99HomePage (WebDriver draiveris) {this.vadītājs = draiveris;}// Iegūstiet lietotāja vārdu no mājas lapaspubliskā virkne getHomePageDashboardUserName () {atgriezt draiveri.findElement (homePageUserName) .getText ();}}

Guru99 Vienkāršs POM selēna testa gadījumā

iesaiņojuma pārbaude;importēt java.util.concurrent.TimeUnit;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.Assert;importēt org.testng.annotations.BeforeTest;importēt org.testng.annotations.Test;importēt lapas.Guru99HomePage;importēt lapas.Guru99Login;publiskā klase Test99GuruLogin {String driverPath = "C: \\ geckodriver.exe";WebDriver draiveris;Guru99Login objLogin;Guru99HomePage objHomePage;@BeforeTestpublic void iestatīšana () {System.setProperty ("webdriver.gecko.driver", driverPath);draiveris = jauns FirefoxDriver ();draiveris.manage (). taimauts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/V4/");}/ *** Šis testa gadījums tiks pieteikts vietnē http://demo.guru99.com/V4/* Pārbaudiet pieteikšanās lapas nosaukumu kā guru99 banka* Piesakieties pieteikumā* Pārbaudiet mājas lapu, izmantojot informācijas paneļa ziņojumu* /@Test (prioritāte = 0)public void test_Home_Page_Appear_Correct () {// Izveidot pieteikšanās lapas objektuobjLogin = jauns Guru99Login (draiveris);// Pārbaudiet pieteikšanās lapas nosaukumuString loginPageTitle = objLogin.getLoginTitle ();Assert.assertTrue (loginPageTitle.toLowerCase (). Satur ("guru99 banka"));// pieteikšanās lietojumprogrammāobjLogin.loginToGuru99 ("mgr123", "mgr! 23");// pāriet uz nākamo lapuobjHomePage = jauns Guru99HomePage (draiveris);// Pārbaudiet mājas lapuAssert.assertTrue (objHomePage.getHomePageDashboardUserName (). ToLowerCase (). Satur ("silītes ID: mgr123"));}

Kas ir lapu rūpnīca selēnā?

Page Factory Selenium ir iebūvēta Page Object Model ietvara koncepcija Selenium WebDriver, taču tā ir ļoti optimizēta. To izmanto lappuses objektu inicializēšanai vai paša lappuses objekta instantēšanai. To izmanto arī, lai inicializētu lapas klases elementus, neizmantojot “FindElement / s”.

Arī šeit mēs ievērojam Page Object Repository un testa metožu atdalīšanas koncepciju. Turklāt, izmantojot klases PageFactory selēnu, mēs izmantojam anotācijas @FindBy, lai atrastu WebElement. Tīmekļa elementu inicializēšanai mēs izmantojam metodi initElements

@FindBy kā atribūtus var pieņemt tagName, particLinkText, name, linkText, id, css, className, xpath .

Apskatīsim to pašu piemēru kā iepriekš, izmantojot Page Factory

Guru99 pieteikšanās lapa ar Page Factory

pakete PageFactory;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.support.FindBy;importēt org.openqa.selenium.support.PageFactory;publiskā klase Guru99Login {/ *** Visas WebElements tiek identificētas ar @FindBy anotāciju* /WebDriver draiveris;@FindBy (name = "uid")WebElement lietotājs99GuruName;@FindBy (vārds = "parole")WebElement parole99Guru;@FindBy (className = "barons")WebElement titleText;@FindBy (name = "btnLogin")WebElement pieteikšanās;public Guru99Login (WebDriver draiveris) {this.vadītājs = draiveris;// Šī initElements metode izveidos visas WebElementsPageFactory.initElements (draiveris, šis);}// Iestatiet lietotāja vārdu tekstlodziņāpublic void setUserName (virkne strUserName) {user99GuruName.sendKeys (strUserName);}// Iestatiet paroli paroles tekstlodziņāpublic void setPassword (virkne strPassword) {parole99Guru.sendKeys (strPassword);}// Noklikšķiniet uz pieteikšanās pogaspublic void clickLogin () {login.click ();}// Iegūstiet pieteikšanās lapas nosaukumupubliskā virkne getLoginTitle () {return titleText.getText ();}/ *** Šī POM metode testa gadījumā tiks pakļauta pieteikšanās lietojumprogrammā* @param strUserName* @param strPasword* @return* /public void loginToGuru99 (String strUserName, String strPasword) {// Aizpildiet lietotāja vārduthis.setUserName (strUserName);// Aizpildiet parolithis.setPassword (strPasword);// Noklikšķiniet uz pogas Pieteiktiesthis.clickLogin ();}}

Guru99 mājas lapa ar lapu rūpnīcu

pakete PageFactory;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.support.FindBy;importēt org.openqa.selenium.support.PageFactory;publiskā klase Guru99HomePage {WebDriver draiveris;@FindBy (xpath = "// tabula // tr [@ class = 'title3']")WebElement homePageUserName;public Guru99HomePage (WebDriver draiveris) {this.vadītājs = draiveris;// Šī initElements metode izveidos visas WebElementsPageFactory.initElements (draiveris, šis);}// Iegūstiet lietotāja vārdu no mājas lapaspubliskā virkne getHomePageDashboardUserName () {atgriezties homePageUserName.getText ();}}

Guru99 TestCase ar Page Factory koncepciju

iesaiņojuma pārbaude;importēt java.util.concurrent.TimeUnit;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.Assert;importēt org.testng.annotations.BeforeTest;importēt org.testng.annotations.Test;importēt PageFactory.Guru99HomePage;importēt PageFactory.Guru99Login;publiskā klase Test99GuruLoginWithPageFactory {String driverPath = "C: \\ geckodriver.exe";WebDriver draiveris;Guru99Login objLogin;Guru99HomePage objHomePage;@BeforeTestpublic void iestatīšana () {System.setProperty ("webdriver.gecko.driver", driverPath);draiveris = jauns FirefoxDriver ();draiveris.manage (). taimauts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/V4/");}/ *** Šis tests ir pieejams vietnē http://demo.guru99.com/V4/* Pārbaudiet pieteikšanās lapas nosaukumu kā guru99 banka* Piesakieties pieteikumā* Pārbaudiet mājas lapu, izmantojot informācijas paneļa ziņojumu* /@Test (prioritāte = 0)public void test_Home_Page_Appear_Correct () {// Izveidot pieteikšanās lapas objektuobjLogin = jauns Guru99Login (draiveris);// Pārbaudiet pieteikšanās lapas nosaukumuString loginPageTitle = objLogin.getLoginTitle ();Assert.assertTrue (loginPageTitle.toLowerCase (). Satur ("guru99 banka"));// pieteikšanās lietojumprogrammāobjLogin.loginToGuru99 ("mgr123", "mgr! 23");// pāriet uz nākamo lapuobjHomePage = jauns Guru99HomePage (draiveris);// Pārbaudiet mājas lapuAssert.assertTrue (objHomePage.getHomePageDashboardUserName (). ToLowerCase (). Satur ("silītes ID: mgr123"));}}

Pilnīga projekta struktūra izskatīsies kā diagramma:

AjaxElementLocatorFactory

AjaxElementLocatorFactory ir slinks PageFactory ielādes jēdziens selēnā. To izmanto tīmekļa elementu atrašanai tikai tad, ja elementi tiek izmantoti jebkurā darbībā. Tas piešķir WebElements taimautu objektu lapu klasei. Viena no galvenajām lapasFactory modeļa izmantošanas priekšrocībām Selenā ir AjaxElementLocatorFactory klase.

Šeit, kad tiek veikta elementa darbība, tā redzamības gaidīšana sākas tikai no šī brīža. Ja elements noteiktā laika intervālā nav atrasts, testēšanas gadījuma izpilde izmet izņēmumu “NoSuchElementException”.

Kopsavilkums

  1. Lapa Object Model in Selenium Websdriver ir objektu krātuves noformējuma modelis.
  2. Selēna lapas objekta modelis rada mūsu testēšanas kodu uzturamu, atkārtoti lietojamu.
  3. Page Factory ir optimizēts veids, kā izveidot objektu repozitoriju Page Object Model ietvara koncepcijā.
  4. AjaxElementLocatorFactory ir slinks ielādes jēdziens Page Factory - lappuses objektu noformējuma modelī, lai WebElements identificētu tikai tad, ja tos izmanto jebkurā darbībā.

Šajā apmācībā lejupielādējiet Selenium projekta failus demonstrācijai