Útmutató a szelénhez a JUnit / TestNG segítségével

1. Bemutatkozás

Ez a cikk egy gyors, gyakorlati bevezetés a szelénnel való együttműködéshez és a tesztek írásához a JUnit és a TestNG segítségével.

2. Szelénintegráció

Ebben a szakaszban egy egyszerű forgatókönyvvel kezdünk: megnyitunk egy böngészőablakot, eljutunk egy adott URL-re, és megkeresünk néhány kívánt tartalmat az oldalon.

2.1. Maven-függőségek

Ban,-ben pom.xml fájlt, adja hozzá a következő függőséget:

 org.seleniumhq.selenium szelén-java 3.4.0 

A legújabb verzió megtalálható a Maven központi adattárában.

2.2. Szelén konfiguráció

Először hozzon létre egy új Java osztályfájlt SeleniumConfig:

public class SeleniumConfig {privát WebDriver illesztőprogram; // ...}

Mivel egy Selenium 3.x verziót használunk, meg kell adnunk egy futtatható fájl elérési útját GeckoDriver fájl (az operációs rendszered alapján) az úgynevezett rendszer tulajdonság segítségével webdriver.gecko.driver A GeckoDriver legújabb verziója letölthető a Github Geckodriver Releases oldalról.

Inicializáljuk most a WebDriver a konstruktorban 5 másodpercet is beállítunk időtúllépésként WebDriver megvárni, amíg megjelenik egy elem az oldalon:

public SeleniumConfig () {képességek képességei = DesiredCapability.firefox (); driver = új FirefoxDriver (képességek); driver.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS); } static {System.setProperty ("webdriver.gecko.driver", findFile ("geckodriver.mac")); } static private String findFile (String fájlnév) {String paths [] = {"", "bin /", "target / class"}; for (Karakterlánc útvonala: elérési útjai) {if (új Fájl (elérési út + fájlnév). létezik ()) visszatérési útvonal + fájlnév; } Visszatérés ""; }

Ez a konfigurációs osztály tartalmaz néhány olyan módszert, amelyeket egyelőre figyelmen kívül hagyunk, de ezekről többet a sorozat második részében fogunk látni.

Ezután meg kell valósítanunk a SzelénPélda osztály:

public class SeleniumExample {private SeleniumConfig config; privát karakterlánc URL = "//www.baeldung.com/"; public SeleniumExample () {config = new SeleniumConfig (); config.getDriver (). get (url); } // ...}

Itt inicializáljuk a SeleniumConfig és állítsa be a navigálni kívánt URL-t. Ehhez hasonlóan egy egyszerű API-t is megvalósítunk a böngésző bezárásához és az oldal címének megszerzéséhez:

public void closeWindow () {this.config.getDriver (). close (); } public String getTitle () {return this.config.getDriver (). getTitle (); }

A baeldung.com Névjegy részéhez való navigáláshoz létre kell hoznunk a closeOverlay () módszer, amely ellenőrzi és bezárja a fedvényt a kezdőlap betöltésekor. Ezt követően navigálunk a About Baeldung oldalra a getAboutBaeldungPage () módszer:

public void getAboutBaeldungPage () {closeOverlay (); clickAboutLink (); clickAboutUsLink (); } private void closeOverlay () {WebElementList = this.config.getDriver () .findElements (By.tagName ("a")); if (webElementList! = null) {webElementList.stream () .filter (webElement -> "Bezárás" .equalsIgnoreCase (webElement.getAttribute ("title"))) .filter (WebElement :: isDisplayed) .findAny () .ifPresent ( WebElement :: kattintás); }} private void clickAboutLink () {Műveletek műveletek = új Műveletek (config.getDriver ()); WebElement aboutElement = this.config.getDriver () .findElement (By.id ("menu-item-6138")); műveletek.moveToElement (aboutElement) .perform (); } private void clickAboutUsLink () {WebElement elem = this.config.getDriver () .findElement (By.partialLinkText ("A Baeldungról.")); elem.kattint (); }

A megjelenített oldalon ellenőrizhetjük, hogy rendelkezésre állnak-e a szükséges információk:

public boolean isAuthorInformationAvailable () {return this.config.getDriver () .getPageSource () .contains ("Hé! Eugen vagyok"); }

Ezután tesztelni fogjuk ezt az osztályt a JUnit és a TestNG segítségével egyaránt.

3. A JUnittel

Hozzunk létre egy új tesztosztályt as néven SzelénWithJUnitLiveTest:

public class SeleniumWithJUnitLiveTest privát statikus SeleniumPélda szelénExample; private String várhatóTitle = "A Baeldungról 

Használni fogjuk a @Óra előtt annotáció tól org.junit.BeforeClass hogy elvégezzen egy kezdeti beállítást. Ebben beállít() metódust inicializálni fogjuk a SzelénPélda tárgy:

@BeforeClass public static void setUp () {seleniumExample = new SeleniumExample (); }

Hasonló módon, amikor a tesztesetünk befejeződik, be kell zárnunk az újonnan megnyitott böngészőt. Ezt meg fogjuk tenni @Óra után kommentár - a beállítások tisztítása a teszteset végrehajtása után:

@AfterClass public static void tearDown () {seleniumExample.closeWindow (); }

Kérjük, vegye figyelembe a statikus módosító a mi SzelénPélda tag változó - mert ezt a változót kell használnunk a beállít() és tearDown () statikus módszerek - @Óra előtt és @Óra után csak statikus módszerekkel hívható meg.

Végül elkészíthetjük a teljes tesztünket:

@Test public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage () {seleniumExample.getAboutBaeldungPage (); String actualTitle = seleniumExample.getTitle (); assertNotNull (actualTitle); assertEquals (várhatóTitle, actualTitle); assertTrue (seleniumExample.isAuthorInformationAvailable ()); }

Ez a vizsgálati módszer azt állítja, hogy a weboldal címe nem az nulla és a várakozásoknak megfelelően van beállítva. Emellett ellenőrizzük, hogy az oldal tartalmazza-e a várt információkat.

A teszt lefutásakor egyszerűen megnyitja az URL-t a Firefoxban, majd a weboldal címének és tartalmának ellenőrzése után bezárja.

4. A TestNG segítségével

Most használjuk a TestNG-t a teszteset / csomag futtatásához.

Ne feledje, hogy az Eclipse használata esetén a TestNG beépülő modul letölthető és telepíthető az Eclipse piactérről.

Először hozzunk létre egy új tesztosztályt:

public class SeleniumWithTestNGLiveTest private SeleniumPélda szelénExample; private String várhatóTitle = "A Baeldungról 

Használjuk a @BeforeSuite annotáció tól org.testng.annotations.BeforeSuite hogy példázza a mi SzelénPélda osztály. A beállít() a módszer közvetlenül a tesztcsomag aktiválása előtt indul el:

@BeforeSuite public void setUp () {seleniumExample = new SeleniumExample (); }

Hasonlóképpen használjuk a @AfterSuite annotáció tól org.testng.annotations.AfterSuite bezárni a megnyitott böngészőnket, amint a tesztkészlet befejeződött:

@AfterSuite public void tearDown () {seleniumExample.closeWindow (); }

Végül hajtsuk végre a tesztünket:

@Test public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage () {seleniumExample.getAboutBaeldungPage (); String actualTitle = seleniumExample.getTitle (); assertNotNull (actualTitle); assertEquals (várhatóTitle, actualTitle); assertTrue (seleniumExample.isAuthorInformationAvailable ()); }

A tesztkészlet sikeres befejezése után HTML és XML jelentéseket találunk a teszt-kimenet a projekt mappája. Ezek a jelentések összefoglalják a teszt eredményeit.

5. Következtetés

Ebben a gyors cikkben a Selenium 3 tesztek gyors bemutatására összpontosítottunk mind a JUnit, mind a TestNG segítségével.

Mint mindig, a cikk forrása elérhető a GitHub oldalon.