Sprievodca selénom pomocou JUnit / TestNG

1. Úvod

Tento článok predstavuje rýchly a praktický úvod do práce so selénom a do písania testov v programoch JUnit a TestNG.

2. Integrácia selénu

V tejto časti začneme jednoduchým scenárom - otvorením okna prehľadávača, prechodom na zadanú adresu URL a hľadaním požadovaného obsahu na stránke.

2.1. Maven závislosti

V pom.xml súbor, pridajte nasledujúcu závislosť:

 org.selenhq.selenium selenium-java 3.4.0 

Najnovšiu verziu nájdete v centrálnom úložisku Maven.

2.2. Konfigurácia selénu

Najskôr vytvorte nový súbor triedy Java s názvom Konfigurácia selénu:

verejná trieda SeleniumConfig {súkromný ovládač WebDriver; // ...}

Vzhľadom na to, že používame verziu selénu 3.x, musíme určiť cestu spustiteľného súboru GeckoDriver súbor (na základe vášho OS) pomocou systémovej vlastnosti s názvom webdriver.gecko.driver Najnovšiu verziu ovládača GeckoDriver si môžete stiahnuť zo servera Github Geckodriver Releases.

Poďme teraz inicializovať WebDriver v konštruktore nastavíme tiež 5 sekúnd ako časový limit pre WebDriver čakať na zobrazenie prvku na stránke:

public SeleniumConfig () {Capabilities capabilities = DesiredCapabilities.firefox (); ovládač = nový FirefoxDriver (možnosti); driver.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS); } static {System.setProperty ("webdriver.gecko.driver", findFile ("geckodriver.mac")); } statický súkromný reťazec findFile (názov súboru reťazca) {cesty reťazca [] = {"", "bin /", "target / classes"}; pre (Reťazcová cesta: cesty) {if (nový Súbor (cesta + názov súboru) .exists ()) návratová cesta + názov súboru; } vrátiť ""; }

Táto konfiguračná trieda obsahuje niekoľko metód, ktoré zatiaľ budeme ignorovať, ale viac o nich uvidíme v druhej časti tejto série.

Ďalej budeme musieť implementovať a SelénPríklad trieda:

verejná trieda SeleniumExample {private SeleniumConfig config; private String url = "//www.baeldung.com/"; public SeleniumExample () {config = new SeleniumConfig (); config.getDriver (). get (url); } // ...}

Tu inicializujeme Konfigurácia selénu a nastavte požadovanú adresu URL, na ktorú chcete prejsť. Podobne implementujeme jednoduché API na zatvorenie prehliadača a získanie názvu stránky:

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

Aby sme mohli prejsť do sekcie About na baeldung.com, musíme vytvoriť a closeOverlay () metóda, ktorá kontroluje a zatvára prekrytie pri načítaní domovskej stránky. Potom prejdeme na stránku About Baeldung pomocou getAboutBaeldungPage () metóda:

public void getAboutBaeldungPage () {closeOverlay (); clickAboutLink (); clickAboutUsLink (); } private void closeOverlay () {List webElementList = this.config.getDriver () .findElements (By.tagName ("a")); if (webElementList! = null) {webElementList.stream () .filter (webElement -> "Zavrieť" .equalsIgnoreCase (webElement.getAttribute ("title"))) .filter (WebElement :: isDisplayed) .findAny () .ifPresent ( WebElement :: kliknutie); }} private void clickAboutLink () {Akcie akcie = nové Akcie (config.getDriver ()); WebElement aboutElement = this.config.getDriver () .findElement (By.id ("položka ponuky-6138")); actions.moveToElement (aboutElement) .perform (); } private void clickAboutUsLink () {WebElement element = this.config.getDriver () .findElement (By.partialLinkText ("Informácie o Baeldungu.")); element.click (); }

Na zobrazenej stránke môžeme skontrolovať, či sú požadované informácie k dispozícii:

public boolean isAuthorInformationAvailable () {return this.config.getDriver () .getPageSource () .contains ("Hej! Ja som Eugen"); }

Ďalej budeme testovať túto triedu s JUnit aj TestNG.

3. S JUnit

Vytvorme novú testovaciu triedu ako SeleniumWithJUnitLiveTest:

verejná trieda SeleniumWithJUnitLiveTest súkromný statický SeleniumExample seleniumExample; private String expectTitle = "O Baeldungu 

Budeme používať @Predtrieda anotácia od org.junit.BeforeClass urobiť úvodné nastavenie. V tomto nastaviť() metóda, ktorú ideme inicializovať SelénPríklad objekt:

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

Podobným spôsobom by sme po dokončení nášho testovacieho prípadu mali zavrieť novootvorený prehliadač. Budeme to robiť s @Po hodine anotácia - vyčistenie nastavení po dokončení vykonávania testovacích prípadov:

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

Vezmite prosím na vedomie statický modifikátor na našom SelénPríklad členská premenná - pretože túto premennú musíme použiť v nastaviť() a strhnúť() statické metódy - @BeforeClass a @Po hodine je možné vyvolať iba na statické metódy.

Na záver môžeme vytvoriť náš úplný test:

@Test public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage () {seleniumExample.getAboutBaeldungPage (); Reťazec actualTitle = seleniumExample.getTitle (); assertNotNull (actualTitle); assertEquals (expectTitle, actualTitle); assertTrue (seleniumExample.isAuthorInformationAvailable ()); }

Táto testovacia metóda tvrdí, že názov webovej stránky nie je nulový a je nastavený podľa očakávania. Okrem toho skontrolujeme, či stránka obsahuje očakávané informácie.

Po spustení testu jednoducho otvorí adresu URL vo Firefoxe a následne ju po overení názvu webovej stránky a obsahu zatvorí.

4. Pomocou TestNG

Poďme teraz pomocou TestNG spustiť náš testovací prípad / sadu.

Upozorňujeme, že ak používate Eclipse, doplnok TestNG je možné stiahnuť a nainštalovať z Eclipse Marketplace.

Najskôr vytvorme novú testovaciu triedu:

verejná trieda SeleniumWithTestNGLiveTest súkromné ​​SeleniumExample selénExample; private String expectTitle = "O Baeldungu 

Použijeme a @BeforeSuite anotácia od org.testng.annotations.BeforeSuite na inštanciu nášho SelénPríkladová trieda. The nastaviť() metóda sa spustí tesne pred aktiváciou testovacej sady:

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

Podobne použijeme @AfterSuite anotácia od org.testng.annotations.AfterSuite zavrieť náš otvorený prehliadač po dokončení testovacej sady:

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

Na záver poďme implementovať náš test:

@Test public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage () {seleniumExample.getAboutBaeldungPage (); Reťazec actualTitle = seleniumExample.getTitle (); assertNotNull (actualTitle); assertEquals (expectTitle, actualTitle); assertTrue (seleniumExample.isAuthorInformationAvailable ()); }

Po úspešnom dokončení testovacej sady nájdeme správy HTML a XML v test-výstup priečinok projektu. Tieto správy zhŕňajú výsledky testov.

5. Záver

V tomto rýchlom článku sme sa zamerali na rýchle úvodné slovo k písaniu testov selénu 3 s JUnit aj TestNG.

Zdroj článku je ako vždy k dispozícii na stránkach GitHub.


$config[zx-auto] not found$config[zx-overlay] not found