webdriver listeners selenium
Kaj so poslušalci WebDriver? Zakaj potrebujemo poslušalce pri testiranju avtomatizacije selena? Ta vadnica podrobno odgovarja na ta vprašanja s primeri vzorčnih kod:
Poslušalci, kot že ime pove, »poslušajo« kateri koli dogodek, ki je predpisan v kodi Selenium. Na primer, če želite vedeti, kaj se zgodi, preden kliknete kateri koli element; pred in po tem, ko se pomaknete do elementa ali kaj se zgodi, ko se vrne izjema in test ne uspe, poslušalci pridejo prav.
Praktična uporaba poslušalcev pri testiranju avtomatizacije selena je lahko zapisovanje vrstnega reda dejanj in posnetek zaslona, ko in ko se vrne izjema. To olajša odpravljanje napak v kasnejših fazah izvajanja preizkusov.
=> Tukaj preverite VSE vadnice za selen.
Kaj se boste naučili:
Izvajanje poslušalcev Webdriver
Obstajata predvsem dve vrsti poslušalcev:
- Poslušalci spletnega gonilnika
- Poslušalci TestNG
Najprej bomo razumeli, kako poslušalci Webdriver delujejo. V tej vadnici se bomo osredotočili na poslušalca dogodkov Webdriver.
Zakaj uporabljamo poslušalca dogodkov Webdriver?
S pomočjo Webdriverja lahko sprožimo veliko dogodkov v brskalniku in spletnih elementih. Spremlja vse dogodke, ki se sprožijo med izvajanjem, in nam lahko pomaga pri odpravljanju napak, ko je izvedba končana.
Prisluškovalce dogodkov Webdriver lahko uporabimo na dva načina:
- WebDriverEventListener ki je vmesnik z nekaj vnaprej določenimi metodami za sledenje dogodkom Webdriver. Od nas zahteva izvajanje VSE metode, vnaprej določene v vmesniku.
- Razred AbstractWebDriverEventListener kar nam omogoča, da izvajamo samo tiste metode, ki nas zanimajo.
# 1) Vmesnik WebDriverEventListener
Vnaprej določene metode, uporabljene za izvajanje vmesnika WebDriverEventListener, so navedene spodaj:
(i) void beforeChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence () arg2)
Ta metoda se sproži, ko na spletnem elementu izvedemo operacijo sendKeys () ali clear (). (Na primer driver.findElement (By.id (»Prijava«)). Clear ()) in se sproži PRED izvajanje postopka na spletnem elementu.
Parametri:
arg0= Web Element arg1=driver
(ii) void afterChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence () arg2)
Ta metoda se sproži, ko na spletnem elementu izvedemo operacijo sendKeys () ali clear (). (Na primer driver.findElement (By.id (»Prijava«)). Clear ()) in se sproži PO izvajanje postopka na spletnem elementu.
Parametri:
arg0= Web Element arg1=driver
(iii) void beforeClickOn (WebElement arg0, WebDriver arg1)
Ta metoda se sproži PRED kliknemo kateri koli spletni element.
Parametri:
arg0= Web Element arg1=driver
(iv) void afterClickOn (WebElement arg0, WebDriver arg1)
avtomatizirana testna orodja za spletne aplikacije
Ta metoda se sproži PO kliknemo kateri koli spletni element.
Parametri:
arg0= Web Element arg1=driver
(v) void beforeNavigateTo (String arg0, WebDriver arg1)
Ta metoda se sproži, ko uporabimo navigate (). To (String URL) (Na primer, navigate (). To (“https: // www.google.com ”)) In se sproži PRED krmarjenje do URL-ja.
Parametri:
arg0= URL arg1=driver
(vi) void afterNavigateTo (String arg0, WebDriver arg1)
Ta metoda se sproži, ko uporabimo navigate (). To (String URL) (Na primer, navigate (). To (“https: // www.google.com ”)) In se sproži PO krmarjenje do URL-ja.
Parametri:
arg0= URL arg1=driver
(vii) void beforeNavigateBack (WebDriver arg0)
Ta metoda se sproži, ko uporabimo ukaz navigate (). Back (). Poteka PRED preusmeritev uporabnika na prejšnjo stran.
Parametri:
arg0=driver
(viii) void afterNavigateBack (WebDriver arg0)
Ta metoda se sproži, ko uporabimo ukaz navigate (). Back (). Poteka PO preusmeritev uporabnika na prejšnjo stran.
Parametri:
arg0=driver
(ix) void beforeNavigateForward (WebDriver arg0)
Ta metoda se sproži, ko uporabimo ukaz navigate (). Forward (). Poteka PRED preusmeritev uporabnika na naslednjo stran.
Parametri:
arg0=driver
(x) void afterNavigateBack (WebDriver arg0)
Ta metoda se sproži, ko uporabimo ukaz navigate (). Forward (). Poteka PO preusmeritev uporabnika na naslednjo stran.
Parametri:
arg0=driver
(xi) void beforeNavigateRefresh (WebDriver arg0)
Ta metoda se sproži, ko uporabimo ukaz navigate (). Refresh (). Poteka PRED osvežitev trenutne strani.
Parametri:
arg0=driver
(xii) void afterNavigateRefresh (WebDriver arg0)
Ta metoda se sproži, ko uporabimo ukaz navigate (). Refresh (). Poteka PO osvežitev trenutne strani.
Parametri:
arg0=driver
(xiii) void beforeFindBy (z arg0, WebElement arg1, WebDriver arg2)
kaj je dober brezplačen prenosnik glasbe
Ta metoda se sproži, ko uporabimo ukaz driver.findElement (By.id (»Nek id ali kateri koli drug lokator«)) . Poteka PRED poiščite spletni element.
Parametri:
arg0=locator arg1=Web Element arg2=driver
(xiv) void afterFindBy (Avtor arg0, WebElement arg1, WebDriver arg2)
Ta metoda se sproži, ko uporabimo ukaz driver.findElement (By.id (»Nek id ali kateri koli drug lokator«)) . Poteka PO poiščite spletni element.
Parametri:
arg0=locator arg1=Web Element arg2=driver
(xv) void onException (Arg0, ki ga je mogoče vrniti, arg1 WebDriver)
Ta metoda se vrže vsakič, ko se vrne izjema. Če na primer Webdriver ne najde elementa, bo sprožil to metodo in izvedel katero koli kodo, ki je zapisana v njej.
Parametri:
arg0=Exception arg1= driver
(xvi) void beforeAlertAccept (WebDriver arg0)
Ta metoda se sproži, kadar je na zaslonu prikazano opozorilno polje in se sproži desno PRED s klikom na gumb »V redu ali Sprejmi«.
Parametri:
arg0=driver
(xvii) void afterAlertAccept (WebDriver arg0)
Ta metoda se sproži, kadar je na zaslonu prikazano opozorilno polje in se sproži desno PO s klikom na gumb »V redu ali Sprejmi«.
Parametri:
arg0=driver
(xviii) void beforeAlertDismiss (WebDriver arg0)
Ta metoda se sproži, kadar je na zaslonu prikazano opozorilno polje in se sproži desno PRED s klikom na gumb “ODPOVED”.
Parametri:
arg0=driver
(xix) void afterAlertDismiss (WebDriver arg0)
Ta metoda se sproži, kadar je na zaslonu prikazano opozorilno polje in se sproži desno PO s klikom na gumb “ODPOVED”.
Parametri:
arg0=driver
To so vse metode, ki so na voljo z WebDriverEventListener. Obstajata še dve metodi beforeScript in afterScript, vendar jih v tej vadnici ne bomo pokrivali.
Koraki za izvedbo poslušalcev s pomočjo vmesnika “WebDriverEventListener” v Eclipse:
Korak 1: Ustvarite paket z imenom »Poslušalci«. V tem paketu ustvarite razred z imenom » Poslušalci Webdriver «In naj se izvaja “WebDriverEventListener” .
Uporabniški vmesnik mora biti videti spodaj:
Miško pomaknite nad rdečo črto z Napaka, Eclipse naj vrže spodnji predlog za uvoz 'WebDriverEventListener'. Kliknite Uvozi.
Napaka na WebDriverEventListener je zapuščena, vendar boste videli spodnjo napako v razredu »WebDriverListeners«. Premaknite kazalec nad napako in videli boste predlog za dodajanje neizvedenih metod. Kliknite nanjo in videli boste, da so vse metode navedene in opisane zgoraj.
Upoštevajte, da smo za namene predstavitve vsaki metodi dodali vrstico System.out.println.
Vzorčna koda-1
package Listeners; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.events.WebDriverEventListener; public class WebDriverListeners implements WebDriverEventListener { @Override public void afterAlertAccept(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Alert Accept '+arg0.toString() ); } @Override public void afterAlertDismiss(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Alert Dismiss '+ arg0); } @Override public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('After value change of' +arg0); } @Override public void afterClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After clicked'+arg0); } @Override public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('After Find By'+arg1); } @Override public void afterNavigateBack(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Navigate Back'); } @Override public void afterNavigateForward(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Navigate Forward'); } @Override public void afterNavigateRefresh(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('On Navigating Refresh'); } @Override public void afterNavigateTo(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('On Navigating To'+arg0); } @Override public void afterScript(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After Script'); } @Override public void beforeAlertAccept(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Alert Accept'); } @Override public void beforeAlertDismiss(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Alert Dismiss'); } @Override public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('Before Change Value of'+arg0); } @Override public void beforeClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Click on'+arg0); } @Override public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('Before Find By'+arg0); } @Override public void beforeNavigateBack(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Back'); } @Override public void beforeNavigateForward(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Forward'); } @Override public void beforeNavigateRefresh(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Refresh'); } @Override public void beforeNavigateTo(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Navigate To'+arg0); } @Override public void beforeScript(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Script'); } @Override public void onException(Throwable arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('On Exception'+arg0); } }
2. korak: Ustvarite Listeners_Tests razreda in se prepričajte, da ima v razredu glavno metodo. Naj razširi razred WebDriverListeners, tako da lahko razred poslušalca izvede operacijo ukazov brskalnika, predpisanih za določene dogodke.
Prosimo, kopirajte spodnjo kodo v razred Listeners_Tests. Zaženite spodnjo kodo, kot je aplikacija Java.
Vzorčna koda-2
package Listeners; import java.util.Arrays; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.events.EventFiringWebDriver; public class Listeners_Tests extends WebDriverListeners{ static WebElement e; static ChromeDriver driver; public static void main(String() args) throws InterruptedException { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); /*Setting the capabilities of Chrome Driver*/ try { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); String proxyServer = String.format('AProxyIDontWantToDisplay', System.getenv('proxy.username'), System.getenv('proxy.password')); proxy.setHttpProxy(proxyServer); capabilities.setCapability('proxy', proxy); ChromeOptions options = new ChromeOptions(); options.addArguments(Arrays.asList ('--no-sandbox','--ignore-certificate-errors','--homepage=about:blank','--no-first-run')); options.addArguments('disable-infobars'); capabilities.setCapability(ChromeOptions.CAPABILITY, options); driver = new ChromeDriver(capabilities); } catch (Exception e) { throw new Error(e); } /*---- Creating the instance of EventFiringWebDriver Class----*/ EventFiringWebDriver eventRecorder = new EventFiringWebDriver(driver); /*---- Creating the instance of parent class 'WebdriverListeners' class----*/ WebDriverListeners eCapture = new WebDriverListeners(); /* The below step registers the listeners for logging purpose*/ eventRecorder.register(eCapture); //Event One System.out.println('This is recording Event-One'); eventRecorder.navigate().to('https://www.google.com'); //Event Two System.out.println('This is recording Event-Two'); eventRecorder.findElement(By.xpath('//a(text()='Sign in')')).click(); //Event Three System.out.println('This is recording Event-Three'); eventRecorder.findElement(By.id('identifierId')).clear(); Thread.sleep(5000); //Event Four System.out.println('This is recording Event-Four'); eventRecorder.findElement(By.id('identifierId')).sendKeys('abc@gmail.com'); Thread.sleep(5000); //Event Five System.out.println('This is recording Event-Five'); eventRecorder.navigate().back(); //Event Six System.out.println('This is recording Event-Six'); eventRecorder.navigate().forward(); //Event Seven System.out.println('This is recording Event-Seven'); eventRecorder.navigate().refresh(); //Event Eight System.out.println('This is recording Event-Eight'); eventRecorder.get('https://www.irctc.co.in/eticketing/loginHome.jsf'); //Event Nine System.out.println('This is recording Event-Nine'); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Ten System.out.println('This is recording Event-Ten'); alert.accept(); } catch (Exception e) { } Thread.sleep(3000); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Eleven System.out.println('This is recording Event-Eleven'); alert.dismiss(); } catch (Exception e) { } //Intentionally giving wrong id so it triggers onException Listener--> Event Twelve System.out.println('This is recording Event-Twelve'); eventRecorder.findElement(By.id('loginbutn')).click(); } }
Ko je zagon uspešno zaključen, preverite vsebino, prijavljeno v konzolo. Udeležili se bomo vseh dogodkov, navedenih v zgornji kodi.
Delček št. 1 konzole
Dogodek-1: To zabeleži dogodek predNavigateTo in afterNavigateTo ter ustrezno izvede dejanja, zapisana v obeh blokih.
Dogodek-2: To zabeleži dogodek predFindBy in afterFindBy ter ustrezno izvede dejanja, zapisana v obeh blokih. Dogodek po teh dveh dogodkih zajema dogodke beforeClick in afterClick.
Dogodek 3: To zabeleži dogodke beforeChangeValueOf in afterChangeValue.
Dogodek 4: To je enako kot dogodek-3
Dogodek 5: To beleži dogodke beforeNavigateBack in afterNavigateBack.
Dogodek 6: To zapisuje dogodke beforeNavigateForward in afterNavigateForward.
Dogodek 7: To zapisuje dogodke beforeNavigateRefresh in afterNavigateRefresh.
Dogodek 8: To je enako kot dogodek-1
Dogodek 9: To je enako kot dogodek-2
Delček št. 2 konzole
Dogodek 10: To beleži dogodke, kot so beforeAlertAccept in afterAlertAccept.
Dogodek-11: To zabeleži dogodke, kot so beforeAlertDismiss in afterAlertDismiss.
Dogodek 12: To zabeleži dogodke, kot je onException, in vrže sporočilo.
Upam, da vam bo kratek opis poslušalcev predstavil, kako delujejo poslušalci Webdriver. Kot smo že povedali, moramo s pomočjo WebDriverEventListener implementirati vse metode, ki so na voljo s tem vmesnikom.
Vprašanja in odgovori na razgovore za razvijalce sql pdf
S pomočjo razreda AbstractWebDriverEventListener pa lahko izberemo, katere dogodke želimo izvesti.
# 2) Razred AbstractWebDriverEventListener
Koraki za implementacijo poslušalcev z uporabo razreda »AbstractWebDriverEventListener«:
Korak 1
Ustvari predavanje “ AbstractWebDriverListener 'In naj podaljša razred' AbstractWebDriverEventListener '
Kot lahko vidite, za razliko od WebDriverEventListener ', Ta razred pri razširitvi ne povzroči napake pri dodajanju neizvedenih metod. Izberete lahko katero koli metodo, ki jo želite uporabiti v svojem projektu.
Kopirajte in prilepite spodnjo kodo:
Vzorčna koda-3
package Listeners; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.events.AbstractWebDriverEventListener; public class AbstractWebDriverListeners extends AbstractWebDriverEventListener{ public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('After value change of' +arg0); } public void afterClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After clicked'+arg0); } public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('After Find By'+arg1); } public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('Before Change Value of'+arg0); } public void beforeClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Click on'+arg0); } public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('Before Find By'+arg0); } }
2. korak
Ustvarite nov razred z imenom » AbstractListeners_Test 'In v njem ustvarite primerek' PovzetekWebDriverListeners ”Razred.
Kopirajte in prilepite spodnjo kodo v ta razred.
Vzorčna koda-4
package Listeners; import java.util.Arrays; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.events.EventFiringWebDriver; public class AbstractListeners_Tests extends WebDriverListeners{ static WebElement e; static ChromeDriver driver; public static void main(String() args) throws InterruptedException { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); /*Setting the capabilities of Chrome Driver*/ try { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); String proxyServer = String.format('AProxyIDontWantToDisplay', System.getenv('proxy.username'), System.getenv('proxy.password')); proxy.setHttpProxy(proxyServer); capabilities.setCapability('proxy', proxy); ChromeOptions options = new ChromeOptions(); options.addArguments(Arrays.asList ('--no-sandbox','--ignore-certificate-errors','--homepage=about:blank','--no-first-run')); options.addArguments('disable-infobars'); capabilities.setCapability(ChromeOptions.CAPABILITY, options); driver = new ChromeDriver(capabilities); } catch (Exception e) { throw new Error(e); } /*---- Creating the instance of EventFiringWebDriver Class----*/ EventFiringWebDriver eventRecorder = new EventFiringWebDriver(driver); /*---- Creating the instance of parent class 'AbstractWebdriverListeners' class----*/ AbstractWebDriverListeners eCapture = new AbstractWebDriverListeners(); /* The below step registers the listeners for logging purpose*/ eventRecorder.register(eCapture); //Event One System.out.println('This is recording Event-One'); eventRecorder.navigate().to('https://www.google.com'); //Event Two System.out.println('This is recording Event-Two'); eventRecorder.findElement(By.xpath('//a(text()='Sign in')')).click(); //Event Three System.out.println('This is recording Event-Three'); eventRecorder.findElement(By.id('identifierId')).clear(); Thread.sleep(5000); //Event Four System.out.println('This is recording Event-Four'); eventRecorder.findElement(By.id('identifierId')).sendKeys('abc@gmail.com'); Thread.sleep(5000); //Event Five System.out.println('This is recording Event-Five'); eventRecorder.navigate().back(); //Event Six System.out.println('This is recording Event-Six'); eventRecorder.navigate().forward(); //Event Seven System.out.println('This is recording Event-Seven'); eventRecorder.navigate().refresh(); //Event Eight System.out.println('This is recording Event-Eight'); eventRecorder.get('https://www.irctc.co.in/eticketing/loginHome.jsf'); //Event Nine System.out.println('This is recording Event-Nine'); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Ten System.out.println('This is recording Event-Ten'); alert.accept(); } catch (Exception e) { } Thread.sleep(3000); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Eleven System.out.println('This is recording Event-Eleven'); alert.dismiss(); } catch (Exception e) { } //Intentionally giving wrong id so it triggers onException Listener--> Event Twelve System.out.println('This is recording Event-Twelve'); eventRecorder.findElement(By.id('loginbutn')).click(); } }
Ta razred ima tudi prej zabeležene dogodke, toda ker smo svoj razred poslušalcev omejili na izvajanje le šestih dogodkov, bo zavrgel druge in prikazal le dnevnik za omenjene.
Pogled okna konzole
Kot lahko vidite rumeno označena območja na zgornji sliki, samo metode, ki so bile uporabljene v PovzetekWebDriverListeners Predavanje je bilo sproženo.
Zaključek
Poslušalci WebDriver so vmesniki, ki poslušajo dogodek brskalnika in se nanj ustrezno odzovejo. Če jo implementirate s pomočjo WebDriverEventListener, morate implementirati vse metode, povezane s tem vmesnikom
Če izvajate poslušalnik WebDriver s pomočjo razreda AbstractWebDriverEventListener, lahko izberete metode, ki jih želite implementirati.
=> Obiščite tukaj, če se želite naučiti selena iz prask.
Priporočeno branje
- Vadnica za kumare selena: Integracija kumar Java Selenium WebDriver
- Uvod v Selenium WebDriver - Vadnica za selenij št. 8
- Vadnica za ChromeDriver Selenium: Preskusi Selenium Webdriver v Chromu
- Implementacija našega prvega skripta WebDriver - Vadnica # 10 za selenium WebDriver
- 30+ najboljših vaj za selen: Naučite se selen z resničnimi primeri
- Pogosta vprašanja o selenu
- Kako ravnati z opozorili / pojavnimi okni v programu Selenium WebDriver - Vodič za selenij št. 16
- Implicitno in eksplicitno čakanje v programu Selenium WebDriver (vrste selenijskih čakal)