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.