TestNG Kuuntelijat sisään Selenium
⚡ Älykäs yhteenveto
Kuuntelijat sisään Selenium WebDriver ovat TestNG rajapintoja, jotka sieppaavat testitapahtumia lokien, raporttien ja virheenjälkeisten toimintojen mukauttamiseksi. Tässä artikkelissa selitetään ITestListener-metodit, käydään läpi suoritettava Java esimerkki ja selventää, miten Selenium 4 korvasi vanhentuneen WebDriverEventListenerin.

Selenium WebDriver-skriptien on usein reagoitava testitapahtumiin, kuten hyväksyttyyn väitteeseen, epäonnistuneeseen paikannukseen tai ohitettuun vaiheeseen. Kuuntelijat mahdollistavat tämän. Yleisesti ottaen, Selenium projektit nojaavat kahteen kuuntelijaperheeseen:
- WebDriver-kuuntelijat
- TestNG kuuntelijoita
Tässä opetusohjelmassa keskitymme TestNG Kuuntelijat, sekä huomautus siitä, miten WebDriver-tason kuuntelijat muuttuivat Selenium 4.x.
Mitä kuuntelija tarkoittaa TestNG?
Kuuntelija on rajapinta, joka muokkaa sovelluksen oletuskäyttäytymistä. TestNGKuten nimestä voi päätellä, kuuntelijat "kuuntelevat" tapahtumia, jotka on määritelty Selenium skriptiä ja reagoi sen mukaisesti. Käytät niitä toteuttamalla asiaankuuluvan kuuntelijarajapinnan ja rekisteröimällä sen testiluokkaasi tai -pakettiisi. Kuuntelijoiden avulla voit mukauttaa TestNG raportteja, liitä kuvakaappauksia ja lähetä strukturoituja lokeja.
Kuuntelijoiden tyypit TestNG
TestNG toimittaa kuuntelijarajapintojen perheen, ja jokainen niistä kohdistuu testin elinkaaren eri vaiheeseen.
Alla on yleisesti käytetyt TestNG kuuntelijat:
- IAnnotationTransformer
- IAnnotationTransformer2
- IMääritettävä
- IConfigurationListener
- IExecutionListener
- IHokoitettava
- IInvokedMethodListener
- IInvokedMethodListener2
- IMethodInterceptor
- IReporter
- ISuiteListener
- ITestListener
Näitä rajapintoja käytetään Selenium lokien luomiseen tai mukauttamiseen TestNG raportteja. Tässä opetusohjelmassa toteutamme ITestListener.
ITestListener paljastaa seuraavat menetelmät:
- käynnistys – kutsutaan, kun jokin testi alkaa.
- TestSuccess-tilassa – kutsutaan, kun testi läpäistään.
- TestFair-tapahtumassa – kutsutaan, kun testi epäonnistuu.
- TestSkipped-tilassa – kutsutaan, kun testi ohitetaan.
- Testi epäonnistui, mutta onnistui prosenttiosuudella – kutsutaan, kun testi epäonnistuu, mutta on onnistumisprosentin sisällä.
- onFinish – kutsutaan sen jälkeen, kun kaikki luokan testit on suoritettu.
Testiskenaario
Tässä testiskenaariossa automatisoimme kirjautumisprosessin ja toteutamme ITestListener sitä vastaan.
- Käynnistää Firefox ja avaa sivusto https://demo.guru99.com/V4/
- Kirjaudu sisään sovellukseen.
Luomisen vaiheet a TestNG kuuntelija
Yllä olevassa testiskenaariossa toteutamme kuuntelijan askel askeleelta.
Vaihe 1) Luo luokka nimeltä Kuuntelijatesti joka toteuttaa ITestListener. Vie hiiri punaisen alleviivauksen päälle ja Eclipse ehdottaa kahta nopeaa korjausta, kuten alla on esitetty:
Napsauta ”Lisää toteuttamattomat metodit”. Koodiisi lisätään useita tynkämetodeja (ilman runkoa) tällä tavalla:
tuoda org.testng.ITestContext;
tuoda org.testng.ITestListener;
tuoda org.testng.ITestResult;
julkinen luokka Kuuntelijatesti työkoneet ITestListener {
@Ohittaa
julkinen tyhjiö onFinish(ITestContext arg0) {
// TODO Automaattisesti luotu metodin tynkä
}
@Ohittaa
julkinen tyhjiö Käynnistä(ITestContext arg0) {
// TODO Automaattisesti luotu metodin tynkä
}
@Ohittaa
julkinen tyhjiö TestFailedButWithinSuccessPercentage(ITestin tulos arg0) {
// TODO Automaattisesti luotu metodin tynkä
}
@Ohittaa
julkinen tyhjiö TestFailure(ITestin tulos arg0) {
// TODO Automaattisesti luotu metodin tynkä
}
@Ohittaa
julkinen tyhjiö TestSkipped(ITestin tulos arg0) {
// TODO Automaattisesti luotu metodin tynkä
}
@Ohittaa
julkinen tyhjiö TestStart(ITestin tulos arg0) {
// TODO Automaattisesti luotu metodin tynkä
}
@Ohittaa
julkinen tyhjiö TestSuccess(ITestin tulos arg0) {
// TODO Automaattisesti luotu metodin tynkä
}
}
Muokkaamme nyt Kuuntelijatesti luokka. Täytämme erityisesti seuraavat metodit: Testin epäonnistuessa, TestSkipped-tilassa, TestStart-tilassaja TestSuccess-testissä.
Muutos on yksinkertainen: jokainen metodi tulostaa testin nimen, jotta konsoli näyttää selvästi läpäisy-, hylkäys- ja ohitustilan.
Muokkauksen jälkeen koodi näyttää tältä:
tuoda org.testng.ITestContext;
tuoda org.testng.ITestListener;
tuoda org.testng.ITestResult;
julkinen luokka Kuuntelijatesti työkoneet ITestListener {
@Ohittaa
julkinen tyhjiö onFinish(ITestContext Tulos) {
}
@Ohittaa
julkinen tyhjiö Käynnistä(ITestContext Tulos) {
}
@Ohittaa
julkinen tyhjiö TestFailedButWithinSuccessPercentage(ITestin tulos Tulos) {
}
// Kun testitapaus epäonnistuu, tätä metodia kutsutaan.
@Ohittaa
julkinen tyhjiö TestFailure(ITestin tulos Tulos) {
System.out.println("Hylänneen testitapauksen nimi on:" + Tulos.getNimi());
}
// Tätä metodia kutsutaan, kun testitapaus ohitetaan.
@Ohittaa
julkinen tyhjiö TestSkipped(ITestin tulos Tulos) {
System.out.println("Ohitetun testitapauksen nimi on:" + Tulos.getNimi());
}
// Kun testitapaus alkaa, tätä metodia kutsutaan.
@Ohittaa
julkinen tyhjiö TestStart(ITestin tulos Tulos) {
System.out.println(Tulos.getNimi() + "Testitapaus aloitettu");
}
// Kun testitapaus läpäisee testin, tätä metodia kutsutaan.
@Ohittaa
julkinen tyhjiö TestSuccess(ITestin tulos Tulos) {
System.out.println("Läpäistyn testitapauksen nimi on:" + Tulos.getNimi());
}
}
Vaihe 2) Luo toinen luokka nimeltä Testitapaukset kirjautumisen automatisointia varten. Selenium suorittaa tämän luokan kirjautuakseen demosivustolle.
tuoda org.openqa.selenium.By;
tuoda org.openqa.selenium.WebDriver;
tuoda org.openqa.selenium.firefox.FirefoxKuljettaja;
tuoda org.testing.Assert;
tuoda org.testng.annotations.Listeners;
tuoda org.testng.annotations.Test;
julkinen luokka Testitapaukset {
web-ajuri kuljettaja = uusi Firefoxkuljettaja();
// Läpäistäväksi suunniteltu testi, jolla varmistetaan kuuntelijan onnistuminen.
@Testata
julkinen tyhjiö Kirjaudu() {
ajuri.get("https://demo.guru99.com/V4/");
driver.findElement(Nimen.By.name()"uid")).sendKeys(”Mngr34926”);
driver.findElement(Nimen.By.name()"Salasana")).sendKeys(”OlenUpenu”);
driver.findElement(Nimen.By.name()”btnLogin”)).klikkaa();
}
// Testi pakotettiin epäonnistumaan, jotta varmistetaan virhekuuntelija.
@Testata
julkinen tyhjiö Testi epäonnistuu() {
System.out.println("Tämä menetelmä testin epäonnistumiseen");
Assert.assertTrue(väärä);
}
}
Vaihe 3) Liitä seuraavaksi tämä kuuntelija testiluokkaamme TestitapauksetLuokan voi yhdistää kuuntelijarajapintaan kahdella tavalla.
Ensimmäinen tapa on käyttää @Kuuntelijat merkintä, kuten alla on esitetty:
Lisäämme tämän merkinnän yläpuolelle Testitapaukset luokka. Luokka näyttää sitten tältä:
tuoda org.openqa.selenium.By;
tuoda org.openqa.selenium.WebDriver;
tuoda org.openqa.selenium.firefox.FirefoxKuljettaja;
tuoda org.testing.Assert;
tuoda org.testng.annotations.Listeners;
tuoda org.testng.annotations.Test;
@Listeners(Listener_Demo.ListenerTest.class)
julkinen luokka Testitapaukset {
web-ajuri kuljettaja = uusi Firefoxkuljettaja();
// Läpäisytesti, onnistumisen varmistamiseksi kuuntelijassa.
@Testata
julkinen tyhjiö Kirjaudu() {
ajuri.get("https://demo.guru99.com/V4/");
driver.findElement(Nimen.By.name()"uid")).sendKeys(”Mngr34926”);
driver.findElement(Nimen.By.name()"Salasana")).sendKeys(”OlenUpenu”);
driver.findElement(Nimen.By.name()”btnLogin”)).klikkaa();
}
// Testi pakotettiin epäonnistumaan, jotta varmistetaan virhekuuntelija.
@Testata
julkinen tyhjiö Testi epäonnistuu() {
System.out.println("Tämä menetelmä testin epäonnistumiseen");
Assert.assertTrue(väärä);
}
}
Projektin rakenne näyttää tältä:
Vaihe 4) Suorita Testitapaukset luokka. Metodit sisällä Kuuntelijatesti kutsutaan automaattisesti annotoitujen metodien käyttäytymisen perusteella @Testata.
Vaihe 5) Tarkista konsolissa näkyvä tuloste.
Tuotos Testitapaukset näyttää:
C:\Users\gauravn\AppData\Local\Temp\testng-eclipse–1058076918\testng-customsuite.xml
Kirjautumisen testitapaus aloitettu
Läpäistyn testitapauksen nimi on: Kirjaudu sisään
TestToFail-testitapaus aloitettu
Tämä menetelmä testaa epäonnistuakseen
Epäonnistuneen testitapauksen nimi on: TestToFail
HYVÄKSYTTY: Kirjaudu sisään
HYLÄSTYI: Testi epäonnistuu
java.lang.AssertionError: odotettu arvo oli [true], mutta löytyi [false]
Kuuntelijan käyttö useille luokille
Jos projektissa on useita testiluokkia, lisäämällä @Kuuntelijat kunkin merkinnän tekeminen muuttuu hankalaksi ja virhealttiiksi.
Luo siinä tapauksessa testng.xml tiedosto ja rekisteröi kuuntelija sinne kerran.
Tätä kuuntelijaa käytetään sitten koko testisarjassa luokkien lukumäärästä riippumatta. Kun suoritat XML-tiedoston, kuuntelija käynnistyy jokaiselle testisarjassa ilmoitetulle luokalle, ja voit ketjuttaa minkä tahansa määrän kuuntelijaluokkia saman tagin sisällä.
WebDriverListener sisään Selenium 4 vs. vanhentunut EventFiringWebDriver
Vaikka TestNG kuuntelijat reagoivat testin elinkaaren tapahtumiin, WebDriver-kuuntelijat reagoivat selainohjaimen toimiin, kuten napsautukseen, navigointiin tai findElement-kutsuun. Selenium 3 Tyypillinen lähestymistapa oli WebDriverEventListener liitäntä kytkettynä läpi Tapahtuman käynnistysverkkoajuriMolemmat ovat vanhentuneita Selenium 4.x.
Nykyaikainen korvaaja on WebDriverListener käyttöliittymä yhdistettynä Tapahtumapolttokoristelija:
tuoda org.openqa.selenium.chrome.ChromeDriver;
tuoda org.openqa.selenium.support.events.EventFiringDecorator;
tuoda org.openqa.selenium.support.events.WebDriverListener;
julkinen luokka Lokikuuntelija työkoneet WebDriverListener {
@Ohittaa
julkinen tyhjiö beforeGet(web-ajuri ohjain, merkkijono-url) {
System.out.println("Navigoiminen kohteeseen" + URL-osoite);
}
}
web-ajuri raaka = uusi Chrome-ohjain();
web-ajuri kuljettaja = uusi Tapahtumapolttokoristelija<>(uusi Lokikuuntelija()).decorate(raw);
Koristelija voi kääriä minkä tahansa WebDriverin, WebElementin tai Alertin, mikä on joustavampaa kuin vanha, tapahtumia käynnistävä kääre. Käytä WebDriverListener selainpuolen havaittavuuden ja TestNG ITestListener pakettikohtaiseen raportointiin.
Tekoälyllä toimivat kuuntelijat: Älykkäämmät lokit ja virheiden triage
Moderni Selenium Tiimit liittävät yhä useammin tekoälypalveluita kuuntelijoihinsa, jotta CI-signaaleista tulisi toiminnallisempia. Testin epäonnistuessa, tekoälyn avustama kuuntelija voi tallentaa DOM-tilannekuvan ja kuvakaappauksen, lähettää ne mallille, joka palauttaa todennäköisen perimmäisen syyn klusterin, ja kirjoittaa tagin takaisin TestNG raportti tai työkalu, kuten ReportPortal.
Yleisiä tekoälyn ohjaamia malleja ovat:
- Hiutaletestin tunnistus: Kuuntelijat välittävät hyväksymis-/hylkäysaikajanat mallille, joka luokittelee epäonnistumisen epätasaiseksi, ympäristöön liittyväksi tai todelliseksi regressioksi.
- Älykkäät kuvakaappaukset: Konenäkömallinnukset rajaavat, kommentoivat ja vertailevat käyttöliittymän näyttökuvia, jotta tarkistajat näkevät muuttuneen alueen koko sivun sijaan.
- Itsekorjautuvat paikantimet: A WebDriverListener koukut ennenEtsi-elementtiä ja pyytää tekoälyavustajaa ehdottamaan vaihtoehtoista paikanninta, kun ensisijainen heittää NoSuchElementException.
- Luonnollisella kielellä tehdyt yhteenvedot: An IReporter Toteutus syöttää sarjan tulokset LLM:ään, joka tuottaa yhden kappaleen mittaisen tiivistelmän.
Kuuntelijakerros on siistein paikka lisätä näitä koukkuja, koska se pysyy testilogiikan ulkopuolella ja sitä sovelletaan yhdenmukaisesti koko sarjassa.
Yhteenveto
Kuuntelijoiden on luotava lokeja tai mukautettava niitä TestNG raportteja Selenium WebDriver.
- TestNG tarjoaa useita kuuntelurajapintoja; valitse se, joka vastaa sinua kiinnostavaa tapahtumaa.
- Kuuntelijat ovat rajapintoja, joita käytetään Selenium WebDriver-skriptit reagoimaan testin elinkaaren tapahtumiin.
- Opastus osoitti ITestListener hyväksytyllä ja hylätyllä kokeella.
- Voit liittää kuuntelijan @Kuuntelijat tai rekisteröi se kerran testng.xml koko sviitille.
- Selenium 4.x korvaa Tapahtuman käynnistysverkkoajuri WebDriverListener + Tapahtumapolttokoristelija WebDriver-tason tapahtumille.






