TestNG Dinleyiciler Selenium
โก Akฤฑllฤฑ รzet
Dinleyiciler Selenium WebDriver'lar TestNG Test olaylarฤฑnฤฑ yakalayarak gรผnlรผkleri, raporlarฤฑ ve hata sonrasฤฑ eylemleri รถzelleลtirmek iรงin kullanฤฑlan arayรผzler. Bu makale, ITestListener yรถntemlerini aรงฤฑklamakta ve รงalฤฑลtฤฑrฤฑlabilir bir รถrneฤi adฤฑm adฤฑm gรถstermektedir. Java รถrnek olarak, nasฤฑl olduฤunu aรงฤฑklฤฑyor. Selenium 4 numaralฤฑ sรผrรผm, kullanฤฑmdan kaldฤฑrฤฑlan WebDriverEventListener'ฤฑn yerini aldฤฑ.
Selenium WebDriver komut dosyalarฤฑ genellikle baลarฤฑlฤฑ bir doฤrulama, baลarฤฑsฤฑz bir konum belirleyici veya atlanan bir adฤฑm gibi test olaylarฤฑna tepki vermeye ihtiyaรง duyar. Dinleyiciler bunu mรผmkรผn kฤฑlar. Genel olarak, Selenium Projeler iki dinleyici ailesine dayanฤฑyor:
- WebDriver Dinleyicileri
- TestNG Dinleyiciler
Bu eฤitimde, odaklanacaฤฤฑz TestNG Dinleyiciler, WebDriver dรผzeyindeki dinleyicilerin nasฤฑl deฤiลtiฤine dair bir notla birlikte. Selenium 4.x.
Dinleyici ne anlama gelir? TestNG?
Bir dinleyici, varsayฤฑlan davranฤฑลฤฑ deฤiลtiren bir arayรผzdรผr. TestNGAdฤฑndan da anlaลฤฑlacaฤฤฑ gibi, Dinleyiciler belirli bir baฤlamda tanฤฑmlanan olaylarฤฑ "dinlerler". Selenium Komut dosyasฤฑnฤฑ yazฤฑn ve buna gรถre tepki verin. Bunlarฤฑ, ilgili Listener arayรผzรผnรผ uygulayarak ve test sฤฑnฤฑfฤฑnฤฑza veya test paketinize kaydederek kullanฤฑrsฤฑnฤฑz. Listener'lar รถzelleลtirmenize olanak tanฤฑr. TestNG Raporlar oluลturun, ekran gรถrรผntรผleri ekleyin ve yapฤฑlandฤฑrฤฑlmฤฑล gรผnlรผkler yayฤฑnlayฤฑn.
Dinleyici Tรผrleri TestNG
TestNG ลirket, bir dizi dinleyici arayรผzรผ sunar ve bunlarฤฑn her biri test yaลam dรถngรผsรผnรผn farklฤฑ bir aลamasฤฑnฤฑ hedefler.
Aลaฤฤฑda yaygฤฑn olarak kullanฤฑlanlar yer almaktadฤฑr. TestNG dinleyiciler:
- IEk AรงฤฑklamaTransformatรถrรผ
- IEk AรงฤฑklamaTransformer2
- Yapฤฑlandฤฑrฤฑlabilir
- IConfigurationListener
- IExecutionListener
- Kancalanabilir
- IInvokedMethodListener
- IInvokedMethodListener2
- IMethodInterceptor
- IR Muhabir
- ISuiteListener
- ITestListener
Bu arayรผzler ลu alanlarda kullanฤฑlฤฑr: Selenium gรผnlรผkler oluลturmak veya รถzelleลtirmek iรงin TestNG Raporlar. Bu eฤitimde, raporlarฤฑ nasฤฑl uygulayacaฤฤฑmฤฑzฤฑ รถฤreneceฤiz. ITestListener.
ITestListener Aลaฤฤฑdaki yรถntemleri ortaya koymaktadฤฑr:
- onStart โ Herhangi bir test baลladฤฑฤฤฑnda รงaฤrฤฑlฤฑr.
- onTestSuccess โ Test baลarฤฑlฤฑ olduฤunda รงaฤrฤฑlฤฑr.
- onTestFailure โ Bir test baลarฤฑsฤฑz olduฤunda รงaฤrฤฑlฤฑr.
- onTestSkipped โ Bir test atlandฤฑฤฤฑnda รงaฤrฤฑlฤฑr.
- onTestFailedButWithinSuccessPercentage โ Testin baลarฤฑsฤฑz olduฤu ancak baลarฤฑ yรผzdesi iรงinde kaldฤฑฤฤฑ durumlarda รงaฤrฤฑlฤฑr.
- onFinish โ Sฤฑnฤฑftaki tรผm testler รงalฤฑลtฤฑrฤฑldฤฑktan sonra รงaฤrฤฑlฤฑr.
Test Senaryosu
Bu test senaryosunda, giriล sรผrecini otomatikleลtirecek ve uygulayacaฤฤฑz. ITestListener Buna karลฤฑ.
- Baลlatmak Firefox ve siteyi aรง https://demo.guru99.com/V4/
- Uygulamaya giriล yapฤฑn.
Oluลturma Adฤฑmlarฤฑ TestNG dinleyici
Yukarฤฑdaki test senaryosu iรงin, Listener'ฤฑ adฤฑm adฤฑm uygulayacaฤฤฑz.
) 1 Adฤฑm Bir sฤฑnฤฑf oluลturun. Dinleyici Testi uygular ITestListenerKฤฑrmฤฑzฤฑ alt รงizginin รผzerine gelin ve Eclipse Aลaฤฤฑda gรถsterildiฤi gibi iki hฤฑzlฤฑ รงรถzรผm รถnereceฤiz:
"Uygulanmamฤฑล metotlar ekle" seรงeneฤine tฤฑklayฤฑn. Kodunuza, aลaฤฤฑdaki gibi birden fazla taslak metot (gรถvdesi olmadan) eklenir:
ithalat org.testng.ITestContext;
ithalat org.testng.ITestListener;
ithalat org.testng.ITestResult;
Kamusal sฤฑnฤฑf Dinleyici Testi uygular ITestListener {
@Override
Kamu geรงersiz onFinish(ITestContext arg0) {
// TODO Otomatik olarak oluลturulmuล metot taslaฤฤฑ
}
@Override
Kamu geรงersiz onStart(ITestContext arg0) {
// TODO Otomatik olarak oluลturulmuล metot taslaฤฤฑ
}
@Override
Kamu geรงersiz onTestFailedButWithinSuccessPercentage(ITestResult arg0) {
// TODO Otomatik olarak oluลturulmuล metot taslaฤฤฑ
}
@Override
Kamu geรงersiz onTestFailure(ITestResult arg0) {
// TODO Otomatik olarak oluลturulmuล metot taslaฤฤฑ
}
@Override
Kamu geรงersiz onTestSkipped(ITestResult arg0) {
// TODO Otomatik olarak oluลturulmuล metot taslaฤฤฑ
}
@Override
Kamu geรงersiz onTestStart(ITestResult arg0) {
// TODO Otomatik olarak oluลturulmuล metot taslaฤฤฑ
}
@Override
Kamu geรงersiz onTestSuccess(ITestResult arg0) {
// TODO Otomatik olarak oluลturulmuล metot taslaฤฤฑ
}
}
ลimdi bunu deฤiลtirelim. Dinleyici Testi Bu sฤฑnฤฑfta รถzellikle aลaฤฤฑdaki yรถntemleri dolduracaฤฤฑz: onTestFailure, onTestSkipped, onTestStart, ve onTestSuccess.
Deฤiลiklik basit: her yรถntem testin adฤฑnฤฑ yazdฤฑrฤฑyor, bรถylece konsol geรงme, kalma ve atlama durumunu aรงฤฑkรงa gรถsteriyor.
Deฤiลiklikten sonra kod ลu ลekilde gรถrรผnรผyor:
ithalat org.testng.ITestContext;
ithalat org.testng.ITestListener;
ithalat org.testng.ITestResult;
Kamusal sฤฑnฤฑf Dinleyici Testi uygular ITestListener {
@Override
Kamu geรงersiz onFinish(ITestContext Sonuรง) {
}
@Override
Kamu geรงersiz onStart(ITestContext Sonuรง) {
}
@Override
Kamu geรงersiz onTestFailedButWithinSuccessPercentage(ITestResult Sonuรง) {
}
// Bir test durumu baลarฤฑsฤฑz olduฤunda bu yรถntem รงaฤrฤฑlฤฑr.
@Override
Kamu geรงersiz onTestFailure(ITestResult Sonuรง) {
System.out.println("Baลarฤฑsฤฑz olan test senaryosunun adฤฑ ลudur: " + Result.getName());
}
// Bir test durumu atlandฤฑฤฤฑnda bu yรถntem รงaฤrฤฑlฤฑr.
@Override
Kamu geรงersiz onTestSkipped(ITestResult Sonuรง) {
System.out.println(Atlanan test senaryosunun adฤฑ ลudur: + Result.getName());
}
// Bir test senaryosu baลladฤฑฤฤฑnda bu metot รงaฤrฤฑlฤฑr.
@Override
Kamu geรงersiz onTestStart(ITestResult Sonuรง) {
System.out.println(Result.getName() + "Test senaryosu baลlatฤฑldฤฑ");
}
// Bir test baลarฤฑlฤฑ olduฤunda bu metot รงaฤrฤฑlฤฑr.
@Override
Kamu geรงersiz onTestSuccess(ITestResult Sonuรง) {
System.out.println("Baลarฤฑlฤฑ olan test senaryosunun adฤฑ ลudur: " + Result.getName());
}
}
) 2 Adฤฑm Baลka bir sฤฑnฤฑf oluลturun. Test Senaryolarฤฑ Giriล otomasyonu iรงin. Selenium Bu sฤฑnฤฑf, demo sitesine giriล yapmak iรงin รงalฤฑลtฤฑrฤฑlacaktฤฑr.
ithalat org.openqa.selenium.Yazan;
ithalat org.openqa.selenium.WebSรผrรผcรผsรผ;
ithalat org.openqa.selenium.firefox.FirefoxSรผrรผcรผ;
ithalat org.testng.Assert;
ithalat org.testng.annotations.Listeners;
ithalat org.testng.annotations.Test;
Kamusal sฤฑnฤฑf Test Senaryolarฤฑ {
Web Sรผrรผcรผsรผ sรผrรผcรผ = yeni FirefoxSรผrรผcรผ();
// Baลarฤฑlฤฑ olup olmadฤฑฤฤฑnฤฑ doฤrulamak iรงin tasarlanmฤฑล test.
@รlรงek
Kamu geรงersiz Giriล yapmak() {
sรผrรผcรผ.al(โhttps://demo.guru99.com/V4/โ);
sรผrรผcรผ.findElement(By.name(โuidโ)).sendKeys(โmngr34926โ);
sรผrรผcรผ.findElement(By.name("Parola")).sendKeys(โamUpenuโ);
sรผrรผcรผ.findElement(By.name(โbtnLoginโ)).tฤฑklamak();
}
// Baลarฤฑsฤฑzlฤฑk dinleyicisini doฤrulamak iรงin test zorla baลarฤฑsฤฑz hale getirildi.
@รlรงek
Kamu geรงersiz TestToFail() {
System.out.println("Bu test yรถntemi baลarฤฑsฤฑz oluyor.");
Doฤru.doฤru(yanlฤฑล);
}
}
) 3 Adฤฑm Ardฤฑndan, bu dinleyiciyi test sฤฑnฤฑfฤฑmฤฑza baฤlayฤฑn. Test SenaryolarฤฑBir sฤฑnฤฑfฤฑ bir dinleyici arayรผzรผne baฤlamanฤฑn iki yolu vardฤฑr.
ฤฐlk yol, @Dinleyiciler Aลaฤฤฑda gรถsterildiฤi gibi aรงฤฑklama:
Bu aรงฤฑklamayฤฑ yukarฤฑya ekliyoruz. Test Senaryolarฤฑ Sฤฑnฤฑf. Sฤฑnฤฑf daha sonra ลu ลekilde gรถrรผnรผr:
ithalat org.openqa.selenium.Yazan;
ithalat org.openqa.selenium.WebSรผrรผcรผsรผ;
ithalat org.openqa.selenium.firefox.FirefoxSรผrรผcรผ;
ithalat org.testng.Assert;
ithalat org.testng.annotations.Listeners;
ithalat org.testng.annotations.Test;
@Dinleyiciler(Dinleyici_Demo.DinleyiciTest.sฤฑnฤฑfฤฑ)
Kamusal sฤฑnฤฑf Test Senaryolarฤฑ {
Web Sรผrรผcรผsรผ sรผrรผcรผ = yeni FirefoxSรผrรผcรผ();
// Baลarฤฑlฤฑ olup olmadฤฑฤฤฑnฤฑ doฤrulamak iรงin testin geรงmesi gerekiyor.
@รlรงek
Kamu geรงersiz Giriล yapmak() {
sรผrรผcรผ.al(โhttps://demo.guru99.com/V4/โ);
sรผrรผcรผ.findElement(By.name(โuidโ)).sendKeys(โmngr34926โ);
sรผrรผcรผ.findElement(By.name("Parola")).sendKeys(โamUpenuโ);
sรผrรผcรผ.findElement(By.name(โbtnLoginโ)).tฤฑklamak();
}
// Baลarฤฑsฤฑzlฤฑk dinleyicisini doฤrulamak iรงin test zorla baลarฤฑsฤฑz hale getirildi.
@รlรงek
Kamu geรงersiz TestToFail() {
System.out.println("Bu test yรถntemi baลarฤฑsฤฑz oluyor.");
Doฤru.doฤru(yanlฤฑล);
}
}
Proje yapฤฑsฤฑ ลรถyle gรถrรผnรผr:
) 4 Adฤฑm Uygula Test Senaryolarฤฑ sฤฑnฤฑfฤฑn iรงindeki metotlar. Dinleyici Testi Bu yรถntemler, ek aรงฤฑklama ile belirtilen yรถntemlerin davranฤฑลฤฑna baฤlฤฑ olarak otomatik olarak รงaฤrฤฑlฤฑr. @รlรงek.
) 5 Adฤฑm Konsolda gรถrรผntรผlenen รงฤฑktฤฑyฤฑ doฤrulayฤฑn.
รฤฑktฤฑsฤฑ Test Senaryolarฤฑ gibi gรถrรผnรผyor:
C:\Users\gauravn\AppData\Local\Temp\testng-eclipseโ1058076918\testng-customsuite.xml
Giriล testi baลlatฤฑldฤฑ
Baลarฤฑlฤฑ olan test senaryosunun adฤฑ: Giriล
TestToFail test senaryosu baลlatฤฑldฤฑ
Bu test yรถntemi baลarฤฑsฤฑz oldu.
Baลarฤฑsฤฑz olan test senaryosunun adฤฑ: TestToFail
BAลARILI: Giriล
BAลARISIZ: TestToFail
java.lang.AssertionError: [true] bekleniyordu ancak [false] bulundu
Birden fazla sฤฑnฤฑf iรงin dinleyici kullanma
Bir projede รงok sayฤฑda test sฤฑnฤฑfฤฑ varsa, bunlara ekleme yapmak... @Dinleyiciler Her birine ayrฤฑ ayrฤฑ aรงฤฑklama eklemek zahmetli ve hataya aรงฤฑk hale gelir.
Bu durumda, bir tane oluลturun. testng.xml Dosyayฤฑ aรงฤฑn ve dinleyiciyi oraya bir kez kaydedin.
Bu dinleyici, sฤฑnฤฑf sayฤฑsฤฑndan baฤฤฑmsฤฑz olarak tรผm test paketine uygulanฤฑr. XML dosyasฤฑnฤฑ รงalฤฑลtฤฑrdฤฑฤฤฑnฤฑzda, dinleyici pakette tanฤฑmlanan her sฤฑnฤฑf iรงin tetiklenir ve aynฤฑ etiket iรงinde istediฤiniz sayฤฑda dinleyici sฤฑnฤฑfฤฑ zincirleyebilirsiniz.
WebDriverListener'da Selenium 4 ile Kullanฤฑmdan Kaldฤฑrฤฑlmฤฑล EventFiringWebDriver karลฤฑlaลtฤฑrmasฤฑ
Sรผre TestNG Test yaลam dรถngรผsรผ olaylarฤฑna tepki veren dinleyiciler, tฤฑklama, gezinme veya findElement รงaฤrฤฑsฤฑ gibi tarayฤฑcฤฑ sรผrรผcรผsรผ eylemlerine tepki veren WebDriver dinleyicileri de mevcuttur. Selenium 3. Tipik yaklaลฤฑm ลuydu: WebSรผrรผcรผOlayDinleyicisi arayรผz kablolu Olay TetiklemeWebSรผrรผcรผsรผฤฐkisi de kullanฤฑmdan kaldฤฑrฤฑlmฤฑลtฤฑr. Selenium 4.x.
Modern alternatifi ลudur: WebSรผrรผcรผDinleyicisi arayรผz ile birleลtirildi EtkinlikAteลlemeDekoratรถrรผ:
ithalat org.openqa.selenium.chrome.ChromeDriver;
ithalat org.openqa.selenium.support.events.EventFiringDecorator;
ithalat org.openqa.selenium.support.events.WebDriverListener;
Kamusal sฤฑnฤฑf Gรผnlรผk Dinleyicisi uygular WebSรผrรผcรผDinleyicisi {
@Override
Kamu geรงersiz beforeGet(Web Sรผrรผcรผsรผ sรผrรผcรผ, Dize url) {
System.out.println(โลuraya yรถnlendiriliyorโ + url);
}
}
Web Sรผrรผcรผsรผ ham = yeni ChromeSรผrรผcรผsรผ();
Web Sรผrรผcรผsรผ sรผrรผcรผ = yeni EtkinlikAteลlemeDekoratรถrรผ<>(yeni LoggingListener()).decorate(raw);
Dekoratรถr, herhangi bir WebDriver, WebElement veya Alert'i sarmalayabilir; bu da eski olay tetiklemeli sarmalayฤฑcฤฑya gรถre daha esnektir. Kullanฤฑm WebSรผrรผcรผDinleyicisi tarayฤฑcฤฑ tarafฤฑ gรถzlemlenebilirliฤi iรงin ve TestNG ITestListener Sรผit dรผzeyinde raporlama iรงin.
Yapay Zeka Destekli Dinleyiciler: Daha Akฤฑllฤฑ Kayฤฑtlar ve Arฤฑza รnceliklendirmesi
Modern Selenium Ekipler, yapay zeka sinyallerini daha eyleme geรงirilebilir hale getirmek iรงin yapay zeka hizmetlerini dinleyicilerine giderek daha fazla entegre ediyor. onTestFailureYapay zeka destekli bir dinleyici, DOM anlฤฑk gรถrรผntรผsรผnรผ ve ekran gรถrรผntรผsรผnรผ yakalayabilir, bunlarฤฑ olasฤฑ kรถk neden kรผmesini dรถndรผren bir modele gรถnderebilir ve bir etiketi geri yazabilir. TestNG Rapor veya ReportPortal gibi bir araรง.
Yapay zekรข destekli yaygฤฑn kalฤฑplar ลunlardฤฑr:
- Kararsฤฑz test tespiti: Dinleyiciler, baลarฤฑsฤฑzlฤฑk durumlarฤฑnฤฑ istikrarsฤฑz, รงevresel veya gerรงek bir gerileme olarak sฤฑnฤฑflandฤฑran bir modele geรงme/kalma zaman รงizelgelerini iletirler.
- Akฤฑllฤฑ ekran gรถrรผntรผleri: Bilgisayar gรถrรผลรผ modelleri, kullanฤฑcฤฑ arayรผzรผ ekran gรถrรผntรผlerini kฤฑrpar, aรงฤฑklama ekler ve farklฤฑlฤฑklarฤฑnฤฑ gรถsterir; bรถylece inceleyenler tรผm sayfanฤฑn dรถkรผmรผ yerine yalnฤฑzca deฤiลen bรถlgeyi gรถrรผrler.
- Kendiliฤinden onarฤฑlan konum belirleyiciler: A WebSรผrรผcรผDinleyicisi kancalar รถnceรฤeyiBul ve birincil konum belirleyici hata verdiฤinde alternatif bir konum belirleyici รถnermesi iรงin bir yapay zeka yardฤฑmcฤฑsฤฑndan yardฤฑm ister. NoSuchElementException.
- Doฤal dil รถzetleri: An IR Muhabir Uygulama, sonuรงlarฤฑ tek paragraflฤฑk bir รถzet รผreten bir LLM'ye aktarฤฑr.
Dinleyici katmanฤฑ, bu kancalarฤฑ eklemek iรงin en temiz yerdir รงรผnkรผ test mantฤฑฤฤฑnฤฑn dฤฑลฤฑnda kalฤฑr ve tรผm test paketine eลit ลekilde uygulanฤฑr.
รZET
Dinleyicilerin gรผnlรผk oluลturmasฤฑ veya รถzelleลtirmesi gerekir TestNG raporlar Selenium WebDriver.
- TestNG Birรงok dinleyici arayรผzรผ sunar; ilgilendiฤiniz etkinliฤe uygun olanฤฑ seรงin.
- Dinleyiciler, kullanฤฑlan arayรผzlerdir. Selenium Test yaลam dรถngรผsรผ olaylarฤฑna tepki vermek iรงin WebDriver komut dosyalarฤฑ.
- Bu eฤitim videosu ลunu gรถsterdi: ITestListener Baลarฤฑlฤฑ ve baลarฤฑsฤฑz olmak รผzere iki testle.
- Bir dinleyiciyi ลu ลekilde ekleyebilirsiniz: @Dinleyiciler veya bir kez kaydedin testng.xml Tรผm sรผit iรงin.
- Selenium 4.x, yerini alฤฑyor Olay TetiklemeWebSรผrรผcรผsรผ 'da WebSรผrรผcรผDinleyicisi + EtkinlikAteลlemeDekoratรถrรผ WebDriver dรผzeyindeki olaylar iรงin.







