TestNG Lyssnare in Selenium
โก Smart sammanfattning
Lyssnare in Selenium WebDriver รคr TestNG grรคnssnitt som fรฅngar upp teshรคndelser fรถr att anpassa loggar, rapporter och รฅtgรคrder efter fel. Den hรคr artikeln fรถrklarar ITestListener-metoder, gรฅr igenom en kรถrbar Java exempel, och fรถrtydligar hur Selenium 4 ersatte den fรถrรฅldrade WebDriverEventListener.

Selenium WebDriver-skript behรถver ofta reagera pรฅ testhรคndelser som en godkรคnd assertion, en misslyckad locator eller ett hoppat steg. Lyssnare gรถr det mรถjligt. I stort sett, Selenium projekt fรถrlitar sig pรฅ tvรฅ lyssnarfamiljer:
- WebDriver-lyssnare
- TestNG lyssnare
I den hรคr handledningen kommer vi att fokusera pรฅ TestNG Lyssnare, med en anteckning om hur lyssnare pรฅ WebDriver-nivรฅ fรถrรคndrades i Selenium 4.x.
Vad รคr en lyssnare i TestNG?
En lyssnare รคr ett grรคnssnitt som modifierar standardbeteendet fรถr TestNGSom namnet antyder โlyssnarโ lyssnare pรฅ hรคndelser definierade i en Selenium skript och reagera dรคrefter. Du anvรคnder dem genom att implementera det relevanta Listener-grรคnssnittet och registrera det i din testklass eller testsvit. Listeners lรฅter dig anpassa TestNG rapporter, bifoga skรคrmdumpar och generera strukturerade loggar.
Typer av lyssnare i TestNG
TestNG levererar en familj av lyssnargrรคnssnitt, och vart och ett riktar sig mot ett annat steg i testlivscykeln.
Nedan fรถljer de vanligt fรถrekommande TestNG lyssnare:
- IAnotationTransformer
- IAnotationTransformer2
- IKonfigurerbar
- IConfigurationListener
- IExecutionListener
- IHookable
- IInvokedMethodListener
- IIanropadMethodListener2
- ImethodInterceptor
- IReporter
- ISuiteListener
- ITestListener
Dessa grรคnssnitt anvรคnds i Selenium fรถr att generera loggar eller anpassa TestNG rapporter. I den hรคr handledningen kommer vi att implementera ITestListener.
ITestListener exponerar fรถljande metoder:
- pรฅStart โ anropas nรคr ett test startar.
- pรฅTestframgรฅng โ anropas nรคr ett test รคr godkรคnt.
- vidTestfel โ anropas nรคr ett test misslyckas.
- vidTestรverhoppat โ anropas nรคr ett prov hoppas รถver.
- vidTestmisslyckadesMenInomLyckadesProcent โ anropas nรคr ett test misslyckas men ligger inom lyckade procent.
- vidSlutfรถrande โ anropas efter att alla tester i klassen har kรถrts.
Testscenario
I det hรคr testscenariot kommer vi att automatisera inloggningsprocessen och implementera ITestListener Emot det.
- Starta Firefox och รถppna webbplatsen https://demo.guru99.com/V4/
- Logga in i applikationen.
Steg fรถr att skapa en TestNG Lyssnare
Fรถr testscenariot ovan kommer vi att implementera lyssnaren steg fรถr steg.
Steg 1) Skapa en klass som heter Lyssnartest som implementerar ITestListenerHรฅll muspekaren รถver den rรถda understreckningen och Eclipse kommer att fรถreslรฅ tvรฅ snabba lรถsningar, som visas nedan:
Klicka pรฅ โLรคgg till oimplementerade metoderโ. Flera stub-metoder (utan brรถdtext) lรคggs till i din kod, ungefรคr sรฅ hรคr:
importera org.testng.ITestContext;
importera org.testng.ITestListener;
importera org.testng.ITestResult;
allmรคn klass Lyssnartest redskap ITestListener {
@ร
sidosรคtta
offentligt ogiltigt vidSlutfรถr(ITestContext arg0) {
// TODO Autogenererad metodstub
}
@ร
sidosรคtta
offentligt ogiltigt pรฅStart(ITestContext arg0) {
// TODO Autogenererad metodstub
}
@ร
sidosรคtta
offentligt ogiltigt vidTestMisslyckadesMenInomLyckadesProcentuellITestresultat arg0) {
// TODO Autogenererad metodstub
}
@ร
sidosรคtta
offentligt ogiltigt vidTestfel(ITestresultat arg0) {
// TODO Autogenererad metodstub
}
@ร
sidosรคtta
offentligt ogiltigt vidTestรverhoppad(ITestresultat arg0) {
// TODO Autogenererad metodstub
}
@ร
sidosรคtta
offentligt ogiltigt vidTestStart(ITestresultat arg0) {
// TODO Autogenererad metodstub
}
@ร
sidosรคtta
offentligt ogiltigt vidTestLyckades(ITestresultat arg0) {
// TODO Autogenererad metodstub
}
}
Lรฅt oss nu modifiera Lyssnartest klass. Vi kommer specifikt att fylla i fรถljande metoder: vidTestfel, vidTestรverhoppad, vidTestStartoch vidTestframgรฅng.
รndringen รคr enkel: varje metod skriver ut testets namn sรฅ att konsolen tydligt visar status fรถr godkรคnd, misslyckad och hoppad รถver.
Efter modifiering ser koden ut sรฅ hรคr:
importera org.testng.ITestContext;
importera org.testng.ITestListener;
importera org.testng.ITestResult;
allmรคn klass Lyssnartest redskap ITestListener {
@ร
sidosรคtta
offentligt ogiltigt vidSlutfรถr(ITestContext Resultat) {
}
@ร
sidosรคtta
offentligt ogiltigt pรฅStart(ITestContext Resultat) {
}
@ร
sidosรคtta
offentligt ogiltigt vidTestMisslyckadesMenInomLyckadesProcentuellITestresultat Resultat) {
}
// Nรคr ett testfall misslyckas anropas den hรคr metoden.
@ร
sidosรคtta
offentligt ogiltigt vidTestfel(ITestresultat Resultat) {
System.out.println("Namnet pรฅ det misslyckade testfallet รคr:" + Resultat.getName());
}
// Nรคr ett testfall hoppas รถver anropas den hรคr metoden.
@ร
sidosรคtta
offentligt ogiltigt vidTestรverhoppad(ITestresultat Resultat) {
System.out.println("Namnet pรฅ det hoppade testfallet รคr:" + Resultat.getName());
}
// Nรคr ett testfall startar anropas den hรคr metoden.
@ร
sidosรคtta
offentligt ogiltigt vidTestStart(ITestresultat Resultat) {
System.out.println(Resultat.getName() + "Testfall pรฅbรถrjat");
}
// Nรคr ett testfall godkรคnns anropas den hรคr metoden.
@ร
sidosรคtta
offentligt ogiltigt vidTestLyckades(ITestresultat Resultat) {
System.out.println("Namnet pรฅ det godkรคnda testfallet รคr:" + Resultat.getName());
}
}
Steg 2) Skapa en annan klass som heter Testfall fรถr automatisering av inloggning. Selenium kommer att kรถra den hรคr klassen fรถr att logga in pรฅ demosidan.
importera org.openqa.selenium.By;
importera org.openqa.selenium.WebDriver;
importera org.openqa.selenium.firefox.FirefoxFรถrare;
importera org.testng.Assert;
importera org.testng.annotations.Lyssnare;
importera org.testng.annotations.Test;
allmรคn klass Testfall {
webbdrivrutin fรถrare = ny FirefoxChauffรถr();
// Test utformat fรถr att klara testet, fรถr att verifiera att lyssnaren lyckades.
@Testa
offentligt ogiltigt Logga in() {
drivrutin.get("https://demo.guru99.com/V4/");
drivrutin.findElement(Efter.namn("uid")).sendKeys("mngr34926");
drivrutin.findElement(Efter.namn("Lรถsenord")).sendKeys("amUpenu");
drivrutin.findElement(Efter.namn("btnLogin")).klick();
}
// Tvรฅngsmisslyckat test, fรถr att verifiera den felaktiga lyssnaren.
@Testa
offentligt ogiltigt TestAttMisslyckas() {
System.out.println("Denna testmetod misslyckas");
Assert.assertTrue(falsk);
}
}
Steg 3) Koppla sedan den hรคr lyssnaren till vรฅr testklass TestfallDet finns tvรฅ sรคtt att ansluta en klass till ett lyssnargrรคnssnitt.
Det fรถrsta sรคttet รคr att anvรคnda @Lyssnare anteckning, som visas nedan:
Vi lรคgger till denna anteckning ovanfรถr Testfall klass. Klassen ser dรฅ ut sรฅ hรคr:
importera org.openqa.selenium.By;
importera org.openqa.selenium.WebDriver;
importera org.openqa.selenium.firefox.FirefoxFรถrare;
importera org.testng.Assert;
importera org.testng.annotations.Lyssnare;
importera org.testng.annotations.Test;
@Listeners(Listener_Demo.ListenerTest.class)
allmรคn klass Testfall {
webbdrivrutin fรถrare = ny FirefoxChauffรถr();
// Test fรถr att klara, fรถr att verifiera att lyssnaren lyckades.
@Testa
offentligt ogiltigt Logga in() {
drivrutin.get("https://demo.guru99.com/V4/");
drivrutin.findElement(Efter.namn("uid")).sendKeys("mngr34926");
drivrutin.findElement(Efter.namn("Lรถsenord")).sendKeys("amUpenu");
drivrutin.findElement(Efter.namn("btnLogin")).klick();
}
// Tvรฅngsmisslyckat test, fรถr att verifiera den felaktiga lyssnaren.
@Testa
offentligt ogiltigt TestAttMisslyckas() {
System.out.println("Denna testmetod misslyckas");
Assert.assertTrue(falsk);
}
}
Projektstrukturen ser ut som:
Steg 4) Kรถr Testfall klass. Metoder inuti Lyssnartest anropas automatiskt baserat pรฅ beteendet hos metoder som รคr annoterade med @Testa.
Steg 5) Verifiera utdata som visas i konsolen.
Utsignalen frรฅn Testfall ser ut som:
C:\Anvรคndare\gauravn\AppData\Lokal\Temp\testng-eclipseโ1058076918\testng-customsuite.xml
Inloggningstest har startat
Namnet pรฅ det godkรคnda testfallet รคr: Logga in
TestToFail-testfallet har startats
Den hรคr testmetoden misslyckas
Namnet pรฅ det misslyckade testfallet รคr: TestToFail
GODKรND: Logga in
MISSLYCKADES: TestAttMisslyckas
java.lang.AssertionError: fรถrvรคntat [sant] men hittat [falskt]
Anvรคnda en lyssnare fรถr flera klasser
Om ett projekt har mรฅnga testklasser, kan man lรคgga till @Lyssnare anteckningar till var och en blir besvรคrliga och felbenรคgna.
I sรฅ fall, skapa en testng.xml filen och registrera lyssnaren dรคr en gรฅng.
Denna lyssnare tillรคmpas sedan รถver hela testsviten oavsett antalet klasser. Nรคr du kรถr XML-filen utlรถses lyssnaren fรถr varje klass som deklarerats i sviten, och du kan kedja ihop valfritt antal lyssnarklasser inom samma tagg.
WebDriverListener i Selenium 4 jรคmfรถrt med den fรถrรฅldrade EventFiringWebDriver
Medan TestNG Lyssnare reagerar pรฅ hรคndelser i testlivscykeln, WebDriver-lyssnare reagerar pรฅ webblรคsardrivrutinรฅtgรคrder som ett klick, en navigering eller ett findElement-anrop. Selenium 3 Det typiska tillvรคgagรฅngssรคttet var WebDriverHรคndelselyssnare grรคnssnittet รคr trรฅdbundet HรคndelseutlรถsandeWebbdrivrutinBรฅda รคr fรถrรฅldrade i Selenium 4.x.
Den moderna ersรคttningen รคr WebDriverListener grรคnssnitt kombinerat med HรคndelseAvfyrningDekoratรถr:
importera org.openqa.selenium.chrome.ChromeDriver;
importera org.openqa.selenium.support.events.EventFiringDecorator;
importera org.openqa.selenium.support.events.WebDriverListener;
allmรคn klass LoggingListener redskap WebDriverListener {
@ร
sidosรคtta
offentligt ogiltigt fรถreGet(webbdrivrutin drivrutin, strรคng-url) {
System.out.println("Navigerar till" + webbadress);
}
}
webbdrivrutin rรฅ = ny ChromeDriver();
webbdrivrutin fรถrare = ny HรคndelseAvfyrningDekoratรถr<>(ny LoggingListener()).decorate(raw);
Dekoratรถren kan omsluta vilken WebDriver, WebElement eller Alert som helst, vilket รคr mer flexibelt รคn den gamla hรคndelseutlรถsande omslutaren. WebDriverListener fรถr observerbarhet pรฅ webblรคsarsidan och TestNG ITestListener fรถr rapportering pรฅ svitnivรฅ.
AI-drivna lyssnare: Smartare loggar och felsortering
Modern Konst Selenium Team kopplar alltmer AI-tjรคnster till sina lyssnare fรถr att gรถra CI-signaler mer handlingsbara. vidTestfel, kan en AI-assisterad lyssnare ta en DOM-รถgonblicksbild plus en skรคrmdump, skicka dem till en modell som returnerar ett troligt rotorsakskluster och skriva en tagg tillbaka till TestNG rapport eller ett verktyg som ReportPortal.
Vanliga AI-drivna mรถnster inkluderar:
- Detektion av flakigt test: Lyssnare vidarebefordrar tidslinjer fรถr godkรคnd/misslyckad till en modell som klassificerar ett misslyckande som ojรคmnt, miljรถmรคssigt eller en verklig regression.
- Smarta skรคrmdumpar: Datorseendemodeller beskรคr, kommenterar och differentierar skรคrmdumpar frรฅn anvรคndargrรคnssnittet sรฅ att granskare ser den รคndrade regionen istรคllet fรถr en helsidesdump.
- Sjรคlvlรคkande lokaliseringsanordningar: A WebDriverListener krokar fรถreFindElement och ber en AI-hjรคlpare att fรถreslรฅ en alternativ positionerare nรคr den primรคra kastar NoSuchElementException.
- Sammanfattningar pรฅ naturligt sprรฅk: An IReporter Implementeringen matar svitens resultat till en LLM som producerar en stรฅende sammanfattning i ett stycke.
Lyssnarlagret รคr det renaste stรคllet att injicera dessa krokar eftersom det hรฅller sig utanfรถr testlogiken och tillรคmpas enhetligt รถver sviten.
Sammanfattning
Lyssnare mรฅste generera loggar eller anpassa TestNG rapporterar i Selenium WebDriver.
- TestNG erbjuder mรฅnga lyssnargrรคnssnitt; vรคlj det som matchar den hรคndelse du bryr dig om.
- Lyssnare รคr grรคnssnitt som anvรคnds i Selenium WebDriver-skript fรถr att reagera pรฅ hรคndelser i testlivscykeln.
- Handledningen demonstrerade ITestListener med ett godkรคnt och ett underkรคnt prov.
- Du kan koppla en lyssnare med @Lyssnare eller registrera den en gรฅng i testng.xml fรถr hela sviten.
- Selenium 4.x ersรคtter HรคndelseutlรถsandeWebbdrivrutin med WebDriverListener + HรคndelseAvfyrningDekoratรถr fรถr hรคndelser pรฅ WebDriver-nivรฅ.






