TestNG Kuulajad sisse Selenium

โšก Nutikas kokkuvรตte

Kuulajad sisse Selenium WebDriver on TestNG liidesed, mis pealt kuulavad testisรผndmusi logide, aruannete ja rikkejรคrgsete toimingute kohandamiseks. See artikkel selgitab ITestListeneri meetodeid, tutvustab kรคivitatavat Java nรคide ja selgitab, kuidas Selenium 4 asendas aegunud WebDriverEventListeneri.

  • โ“ Mida kuulajad teevad: Nad tellivad TestNG sรผndmused nagu alustamine, lรคbimine, ebaรตnnestumine ja vahelejรคtmine logimise vรตi aruandluse konksude juhtimiseks.
  • ๐Ÿงฉ Kaksteist liidest: TestNG pakub detailse juhtimise tagamiseks liideseid nagu ITestListener, ISuiteListener, IReporter, IInvokedMethodListener ja IAnnotationTransformer.
  • ๐Ÿ› ๏ธ Kaks juhtmestiku reลพiimi: Lisage kuulaja @Listeners annotatsiooniga รผhele klassile vรตi registreerige see iga komplekti jaoks รผks kord testng.xml-is.
  • ๐Ÿš€ Selenium 4. aasta vรคrskendus: EventFiringWebDriver on aegunud; moodne WebDriverListeneri liides koos EventFiringDecoratoriga toetab nรผรผd WebDriver-tasemel sรผndmuste konksusid.
  • ๐Ÿค– AI nurk: Tehisintellekti abil kuulajad saavad tรตrkeid automaatselt klassifitseerida, lisada nutikaid ekraanipilte ja edastada ebaรผhtlaseid testisignaale reaalajas CI armatuurlaudadele.

TestNG Kuulajad sisse Selenium

Selenium WebDriveri skriptid peavad sageli reageerima testisรผndmustele, nรคiteks sooritatud vรคitele, ebaรตnnestunud lokaatorile vรตi vahelejรคetud sammule. Kuulajad teevad selle vรตimalikuks. รœldiselt Selenium projektid tuginevad kahele kuulajate perekonnale:

  1. WebDriveri kuulajad
  2. TestNG Kuulajad

Selles รตpetuses keskendume jรคrgmisele: TestNG Kuulajad koos mรคrkusega selle kohta, kuidas WebDriveri tasemel kuulajad muutusid Selenium 4.x.

Mis on kuulaja TestNG?

Kuulaja on liides, mis muudab rakenduse vaikekรคitumist. TestNGNagu nimigi รผtleb, kuulajad "kuulavad" sรผndmusi, mis on mรครคratletud Selenium skripti ja reageerige vastavalt. Nende kasutamiseks rakendate vastava kuulaja liidese ja registreerite selle oma testiklassis vรตi -komplektis. Kuulajad vรตimaldavad teil kohandada TestNG aruandeid, ekraanipilte lisada ja struktureeritud logisid vรคljastada.

Kuulajate tรผรผbid TestNG

TestNG pakub kuulamisliideste perekonda ja igaรผks neist on suunatud testi elutsรผkli erinevale etapile.

Allpool on toodud tavaliselt kasutatavad TestNG kuulajad:

  1. IAnnotationTransformer
  2. IAnnotationTransformer2
  3. ISeadistatav
  4. IConfigurationListener
  5. IExecutionListener
  6. Haagitav
  7. IIinvokedMethodListener
  8. IIinvokedMethodListener2
  9. IMethodInterceptor
  10. IReporter
  11. ISuiteListener
  12. ITestListener

Neid liideseid kasutatakse Selenium logide genereerimiseks vรตi kohandamiseks TestNG aruanded. Selles รตpetuses rakendame ITestListener.

ITestListener paljastab jรคrgmised meetodid:

  • onStart โ€“ kutsutakse vรคlja iga testi alustamisel.
  • TestSuccess โ€“ helistatakse, kui test on sooritatud.
  • Testi tรตrke korral โ€“ kutsutakse vรคlja, kui test ebaรตnnestub.
  • TestSkipped-i puhul โ€“ kutsutakse vรคlja, kui test vahele jรคetakse.
  • Testi ebaรตnnestumise, kuid edukuse protsent โ€“ kutsutakse vรคlja, kui test ebaรตnnestub, kuid on edukuse protsendi piires.
  • onFinish โ€“ kutsutakse vรคlja pรคrast kรตigi klassi testide tรคitmist.

Testi stsenaarium

Selles testistsenaariumis automatiseerime sisselogimisprotsessi ja rakendame ITestListener selle vastu.

  1. Algatama Firefox ja avage sait https://demo.guru99.com/V4/

Testistsenaariumi sisselogimine URL

  1. Logi rakendusse sisse.

Testistsenaariumi sisselogimisvorm

Loomise sammud a TestNG Kuulaja

รœlaltoodud testistsenaariumi jaoks rakendame kuulaja samm-sammult.

Step 1) Loo klass nimega Kuulaja test mis rakendab ITestListener. Liigutage kursorit punase allajoonitud joone kohale ja Eclipse soovitab kahte kiiret lahendust, nagu allpool nรคidatud:

Eclipse kiirparandus rakendamata meetodite lisamiseks

Klรตpsa nupul โ€žLisa rakendamata meetodidโ€œ. Koodile lisatakse mitu tรผvimeetodit (ilma sisuta), sarnaselt sellele:

pakend Kuulaja_Demo;

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

avalik klass Kuulaja test tรถรถriistad ITestListener {

@รœle
avalik tรผhjus onFinish(ITestContext arg0) {
// TODO automaatselt genereeritud meetodi tรผvi
}

@รœle
avalik tรผhjus onStart(ITestContext arg0) {
// TODO automaatselt genereeritud meetodi tรผvi
}

@รœle
avalik tรผhjus TestFailedButWithinSuccessPercentage(ITesti tulemus arg0) {
// TODO automaatselt genereeritud meetodi tรผvi
}

@รœle
avalik tรผhjus TestFaulure(ITesti tulemus arg0) {
// TODO automaatselt genereeritud meetodi tรผvi
}

@รœle
avalik tรผhjus TestSkipped(ITesti tulemus arg0) {
// TODO automaatselt genereeritud meetodi tรผvi
}

@รœle
avalik tรผhjus TestStartil (ITesti tulemus arg0) {
// TODO automaatselt genereeritud meetodi tรผvi
}

@รœle
avalik tรผhjus onTestSuccess(ITesti tulemus arg0) {
// TODO automaatselt genereeritud meetodi tรผvi
}
}

Nรผรผd muudame seda Kuulaja test klass. Tรคpsemalt tรคidame jรคrgmised meetodid: Testi ebaรตnnestumisel, TestSkipped, TestStartilja Testi รตnnestumise korral.

Muudatus on lihtne: iga meetod prindib testi nime, nii et konsool nรคitab selgelt lรคbimise, ebaรตnnestumise ja vahelejรคtmise olekut.

Pรคrast muutmist nรคeb kood vรคlja selline:

pakend Kuulaja_Demo;

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

avalik klass Kuulaja test tรถรถriistad ITestListener {

@รœle
avalik tรผhjus onFinish(ITestContext Tulemus) {
}

@รœle
avalik tรผhjus onStart(ITestContext Tulemus) {
}

@รœle
avalik tรผhjus TestFailedButWithinSuccessPercentage(ITesti tulemus Tulemus) {
}

// Kui test ebaรตnnestub, kutsutakse seda meetodit vรคlja.
@รœle
avalik tรผhjus TestFaulure(ITesti tulemus Tulemus) {
System.out.println(โ€žNurjunud testi nimi on:โ€œ + Tulemus.getNimi());
}

// Kui test jรคetakse vahele, kutsutakse seda meetodit vรคlja.
@รœle
avalik tรผhjus TestSkipped(ITesti tulemus Tulemus) {
System.out.println(โ€žVahelevale jรคetud testjuhtumi nimi on:โ€œ + Tulemus.getNimi());
}

// Kui test algab, kutsutakse seda meetodit vรคlja.
@รœle
avalik tรผhjus TestStartil (ITesti tulemus Tulemus) {
System.out.println(Tulemus.getNimi() + "Testijuhtum alustatud");
}

// Kui test lรคbib testi, kutsutakse seda meetodit vรคlja.
@รœle
avalik tรผhjus onTestSuccess(ITesti tulemus Tulemus) {
System.out.println(โ€žLรคbitud testi nimi on:โ€œ + Tulemus.getNimi());
}
}

Step 2) Loo teine โ€‹โ€‹klass nimega Testijuhtumid sisselogimise automatiseerimiseks. Selenium kรคivitab selle klassi demosaidile sisselogimiseks.

pakend Kuulaja_Demo;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxJuht;
import org.testing.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

avalik klass Testijuhtumid {
Veebidraiver juht = uus Firefoxjuht();

// Lรคbimiseks loodud test edukuse kontrollimiseks (listener).
@Test
avalik tรผhjus Logi sisse() {
draiver.get("https://demo.guru99.com/V4/");
driver.findElement(By.name()โ€žuidโ€)).sendKeys(โ€žMngr34926โ€);
driver.findElement(By.name()"Parool")).sendKeys(โ€žolenUpenuโ€);
driver.findElement(By.name()โ€žbtnLoginโ€)).klikk();
}

// Sunniviisiliselt ebaรตnnestunud test, et kontrollida tรตrkekuulajat.
@Test
avalik tรผhjus TestEbaรตnnestumiskatse() {
System.out.println("See meetod testi ebaรตnnestumiseks");
Assert.assertTrue()vale);
}
}

Step 3) Jรคrgmisena รผhendage see kuulaja meie testklassiga TestijuhtumidKlassi kuulajaliidesega รผhendamiseks on kaks vรตimalust.

Esimene vรตimalus on kasutada @Kuulajad mรคrkus, nagu allpool nรคidatud:

@Kuulajad(Kuulaja_Demo.KuulajaTest.klass)

Lisame selle mรคrkuse รผlalpool Testijuhtumid klass. Seejรคrel nรคeb klass vรคlja selline:

pakend Kuulaja_Demo;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxJuht;
import org.testing.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Kuulajad(Kuulaja_Demo.KuulajaTest.klass)
avalik klass Testijuhtumid {
Veebidraiver juht = uus Firefoxjuht();

// Lรคbimiseks vajalik test, edukuse kontrollimiseks kuulaja.
@Test
avalik tรผhjus Logi sisse() {
draiver.get("https://demo.guru99.com/V4/");
driver.findElement(By.name()โ€žuidโ€)).sendKeys(โ€žMngr34926โ€);
driver.findElement(By.name()"Parool")).sendKeys(โ€žolenUpenuโ€);
driver.findElement(By.name()โ€žbtnLoginโ€)).klikk();
}

// Sunniviisiliselt ebaรตnnestunud test, et kontrollida tรตrkekuulajat.
@Test
avalik tรผhjus TestEbaรตnnestumiskatse() {
System.out.println("See meetod testi ebaรตnnestumiseks");
Assert.assertTrue()vale);
}
}

Projekti struktuur nรคeb vรคlja selline:

TestNG Kuulaja projekti struktuur

Step 4) Kรคivitage Testijuhtumid klass. Meetodid sees Kuulaja test kutsutakse automaatselt vรคlja, tuginedes annoteeritud meetodite kรคitumisele @Test.

Step 5) Kontrollige konsoolil kuvatavat vรคljundit.

Vรคljund Testijuhtumid paistab nagu:

TestNG Kuulamiskonsooli vรคljund

[TestNGJooksmine:
C:\Users\gauravn\AppData\Local\Temp\testng-eclipseโ€“1058076918\testng-customsuite.xml

Sisselogimise testjuhtum alustatud
Lรคbitud testi nimi on: Logi sisse
TestToFaili testijuhtum alustatud
See meetod testi ebaรตnnestumiseks
Nurjunud testi nimi on: TestToFail
Lร„BITUD: Logi sisse
NURJUNUD: Test ebaรตnnestus
java.lang.AssertionError: oodatud vรครคrtus [true], aga leitud vรครคrtus [false]

Kuulaja kasutamine mitme klassi jaoks

Kui projektil on palju testiklasse, siis nende lisamine @Kuulajad igaรผhe juurde mรคrkuste tegemine muutub tรผlikaks ja veaohtlikuks.

Sellisel juhul looge testng.xml fail ja registreeri kuulaja seal รผks kord.

testng.xml kuulajate silt mitme klassi jaoks

Seejรคrel rakendatakse seda kuulajat kogu testikomplektile, olenemata klasside arvust. XML-faili kรคivitamisel kรคivitub kuulaja iga komplektis deklareeritud klassi puhul ja sama sildi sees saab aheldada mis tahes arvu kuulajaklasse.

WebDriverListener sees Selenium 4 vs aegunud EventFiringWebDriver

Kui TestNG kuulajad reageerivad testi elutsรผkli sรผndmustele, WebDriveri kuulajad aga brauseri draiveri toimingutele, nรคiteks klรตpsule, navigeerimisele vรตi findElement-kรตnele. Selenium 3 Tรผรผpiline lรคhenemisviis oli Veebidraiveri sรผndmuste kuulaja liides lรคbi juhtmega Sรผndmuse kรคivitamise veebidraiverMรตlemad on aegunud Selenium 4.x.

Kaasaegne asendus on WebDriverListener liides koos SรผndmusteKรผtusdekoraator:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.events.EventFiringDecorator;
import org.openqa.selenium.support.events.WebDriverListener;

avalik klass Logimise kuulaja tรถรถriistad WebDriverListener {
@รœle
avalik tรผhjus beforeGet(Veebidraiver draiver, stringi URL) {
System.out.println(โ€žNavigeerimine sihtkohtaโ€œ + URL);
}
}

Veebidraiver toores = uus ChromeDriver();
Veebidraiver juht = uus SรผndmusteKรผtusdekoraator<>(uus LogimiseKuulaja()).dekoreeri(toores);

Dekoraator saab mรคhkida mis tahes WebDriveri, WebElemendi vรตi Alerti, mis on paindlikum kui vana sรผndmusi kรคivitav mรคhkija. Kasutage. WebDriverListener brauseripoolse jรคlgitavuse ja TestNG ITestListener sviiditaseme aruandluse jaoks.

Tehisintellektil pรตhinevad kuulajad: nutikamad logid ja rikete triaaลพ

Kaasaegne Selenium Meeskonnad lisavad รผha enam tehisintellekti teenuseid oma kuulajatesse, et muuta CI-signaalid tegutsemiskรตlblikumaks. Testi ebaรตnnestumisel, saab tehisintellekti abil kuulaja jรครคdvustada DOM-i hetktรตmmise ja ekraanipildi, saata need mudelile, mis tagastab tรตenรคolise algpรตhjuse klastri, ja kirjutada sildi tagasi TestNG aruanne vรตi tรถรถriist nagu ReportPortal.

Levinud tehisintellektil pรตhinevad mustrid hรตlmavad jรคrgmist:

  • Helbelise testi tuvastamine: Kuulajad edastavad lรคbikukkumise/ebaรตnnestumise ajajooned mudelile, mis liigitab lรคbikukkumise ebaรผhtlaseks, keskkonnast tingitud vรตi reaalseks regressiooniks.
  • Nutikad ekraanipildid: Arvutinรคgemine modelleerib kasutajaliidese ekraanipilte kรคrpimist, mรคrkuste lisamist ja erinevuste lisamist, et arvustajad nรคeksid muudetud piirkonda, mitte terve lehe mรคlutรตmmist.
  • Isetervenevad lokaatorid: A WebDriverListener konksud enneOtsiElementi ja palub tehisintellekti abilisel soovitada alternatiivset lokaatorit, kui esmane viskab NoSuchElementException.
  • Loomulikus keeles kokkuvรตtted: An IReporter Rakendamine annab komplekti tulemustest LLM-i, mis loob รผhe lรตigu pikkuse stand-up kokkuvรตtte.

Kuulajakiht on nende konksude sisestamiseks kรตige puhtam koht, kuna see jรครคb testiloogikast vรคlja ja rakendub รผhtlaselt kogu komplektile.

kokkuvรตte

Kuulajad peavad looma logisid vรตi kohandama TestNG aruanded aastal Selenium Veebidraiver.

  • TestNG pakub palju kuulamisliideseid; vali see, mis sobib sรผndmusega, mis sind huvitab.
  • Kuulajad on liidesed, mida kasutatakse Selenium WebDriveri skriptid testi elutsรผkli sรผndmustele reageerimiseks.
  • ร•petus nรคitas ITestListener sooritatud ja mittesooritatud testiga.
  • Saate kuulaja lisada, kasutades @Kuulajad vรตi registreerige see รผks kord testng.xml kogu sviidi jaoks.
  • Selenium 4.x asendab Sรผndmuse kรคivitamise veebidraiver koos WebDriverListener + SรผndmusteKรผtusdekoraator WebDriveri tasemel sรผndmuste jaoks.

KKK

Kuulaja on liides, mis tellib toimingu ajal genereeritud sรผndmusi. Selenium katsesรตit. TestNG Kuulajad reageerivad testi elutsรผkli sรผndmustele, nagu alustamine, lรคbimine, ebaรตnnestumine ja vahelejรคtmine. WebDriveri kuulajad reageerivad brauseri draiveri sรผndmustele, nagu klรตpsud, navigeerimised ja findElement-kรตned.

ITestListener kรคivitub รผksikute @Test meetodite puhul ning avaldab vรครคrtused onTestStart, onTestSuccess, onTestFailure, onTestSkipped ja onFinish. ISuiteListener kรคivitub iga komplekti kohta ainult kaks korda, vรครคrtustega onStart ja onFinish, mistรตttu sobib see ideaalselt komplekti tasemel seadistamiseks, nรคiteks aruandefaili avamiseks.

Registreerida saab a TestNG kuulaja kahel viisil: lisada testklassi kohale annotatsioon @Listeners(MyListener.class) vรตi deklareerida silt failis testng.xml. XML-lรคhenemisviis rakendab kuulajat kรตigis komplekti klassides ilma lรคhtekoodi muutmata.

EventFiringWebDriver ja WebDriverEventListener on aegunud Selenium 4.x. Soovitatav asendus on WebDriverListeneri liides koos EventFiringDecoratoriga, mis suudab mรคhkida WebDriveri, WebElementi vรตi Alerti eksemplare ning pakub selgemaid konksusid, nรคiteks beforeGet ja afterClick.

Kasutage IReporterit, kui soovite pรคrast komplekti valmimist luua kohandatud aruande, nรคiteks HTML- vรตi JSON-kokkuvรตtte. Kasutage IInvokedMethodListenerit, kui vajate enne ja pรคrast iga testimismeetodit, sealhulgas konfiguratsioonimeetodeid nagu @BeforeMethod ja @AfterMethod, konksu.

Tehisintellekti mudelid saavad kuulaja vรคljundit rikastada, mรคrgistades iga logikirje raskusastmega, genereerides loomulikus keeles sammukirjeldusi ja klasterdades seotud tรตrkeid. onTestFailure'i sees saab tehisintellekti teenus analรผรผsida ekraanipilti ja pinu. trace, seejรคrel lisage tรตenรคoline algpรตhjus TestNG aru.

Jah. Kuulaja saab edastada lรคbimise/lรคbikukkumise ajalugu tehisintellekti teenusele, mis liigitab tรตrke ebaรผhtlaseks, keskkonnaprobleemiks vรตi reaalseks regressiooniks. Otsus kirjutatakse tagasi jรคrgmiselt: TestNG atribuut, nii et armatuurlauad saavad ebaรผhtlaseid teste karantiini panna ilma, et inimene iga uut versiooni รผle vaataks.

Vรตta see postitus kokku jรคrgmiselt: