Ú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.