webdriver listeners selenium
Wat zijn WebDriver-luisteraars? Waarom hebben we luisteraars nodig bij het testen van seleniumautomatisering? Deze zelfstudie beantwoordt deze vragen in detail met voorbeeldcodevoorbeelden:
Luisteraars, zoals de naam suggereert, 'luisteren' naar elke gebeurtenis die wordt voorgeschreven in de Selenium-code. Als u bijvoorbeeld wilt weten wat er gebeurt voordat u op een element klikt; voor en nadat je naar een element navigeert, of wat er gebeurt als er een uitzondering wordt gegenereerd en de test mislukt, zijn luisteraars handig.
Het praktische gebruik van Listeners in Selenium Automation Testing zou kunnen zijn om de volgorde van acties te loggen en om een screenshot te maken wanneer en wanneer een uitzondering wordt gegenereerd. Dit vergemakkelijkt het opsporen van fouten in latere stadia van de testuitvoering.
Bekijk hier ALLE Selenium-handleidingen.
Wat je leert:
Implementatie van Webdriver-listeners
Er zijn hoofdzakelijk twee soorten luisteraars:
- Webdriver-luisteraars
- TestNG-luisteraars
We zullen eerst begrijpen hoe Webdriver Listeners werken. In deze zelfstudie ligt onze focus op de Webdriver Event Listener.
Waarom gebruiken we Webdriver Event Listener?
Met behulp van Webdriver kunnen we veel gebeurtenissen in de browser en webelementen activeren. Het houdt alle gebeurtenissen bij die tijdens de uitvoering worden geactiveerd en kan ons helpen bij het debuggen wanneer de uitvoering is voltooid.
Er zijn twee manieren waarop we de Webdriver Event Listeners kunnen implementeren:
- WebDriverEventListener dit is een interface met een aantal vooraf gedefinieerde methoden voor het volgen van de Webdriver-gebeurtenissen. Het vereist dat we implementeren ALLE de methoden die vooraf zijn gedefinieerd in de interface.
- AbstractWebDriverEventListener-klasse wat ons de mogelijkheid geeft om alleen die methoden te implementeren waarin we geïnteresseerd zijn.
# 1) WebDriverEventListener-interface
Vooraf gedefinieerde methoden die worden gebruikt om de WebDriverEventListener-interface te implementeren, worden hieronder vermeld:
(i) void beforeChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence () arg2)
Deze methode wordt geactiveerd wanneer we de bewerking sendKeys () of clear () uitvoeren op het webelement. (Bijvoorbeeld driver.findElement (By.id ('Login')). Clear ()), en wordt geactiveerd VOORDAT het uitvoeren van de bewerking op het webelement.
Parameters:
(ii) ongeldig afterChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence () arg2)
Deze methode wordt geactiveerd wanneer we de bewerking sendKeys () of clear () uitvoeren op het webelement. (Bijvoorbeeld driver.findElement (By.id ('Login')). Clear ()), en wordt geactiveerd NA het uitvoeren van de bewerking op het webelement.
Parameters:
(iii) ongeldig beforeClickOn (WebElement arg0, WebDriver arg1)
Deze methode wordt geactiveerd VOORDAT we klikken op een webelement.
Parameters:
(iv) ongeldig afterClickOn (WebElement arg0, WebDriver arg1)
geen shockwave flash-object geïnstalleerd swf-bestandsspeler
Deze methode wordt geactiveerd NA we klikken op een webelement.
Parameters:
(v) void beforeNavigateTo (String arg0, WebDriver arg1)
Deze methode wordt geactiveerd wanneer we navigeren (). To (String-URL) (bijvoorbeeld, navigeer (). To ('https: // www.google.com ”)), En wordt geactiveerd VOORDAT navigeren naar de URL.
Parameters:
(vi) void afterNavigateTo (String arg0, WebDriver arg1)
Deze methode wordt geactiveerd wanneer we navigeren (). To (String-URL) (bijvoorbeeld, navigeer (). To ('https: // www.google.com ”)), En wordt geactiveerd NA navigeren naar de URL.
Parameters:
(vii) void beforeNavigateBack (WebDriver arg0)
Deze methode wordt geactiveerd wanneer we het commando navigeren (). Back () gebruiken. Het vindt plaats VOORDAT het omleiden van de gebruiker naar de vorige pagina.
Parameters:
(viii) void afterNavigateBack (WebDriver arg0)
Deze methode wordt geactiveerd wanneer we het commando navigeren (). Back () gebruiken. Het vindt plaats NA het omleiden van de gebruiker naar de vorige pagina.
Parameters:
(ix) void beforeNavigateForward (WebDriver arg0)
Deze methode wordt geactiveerd wanneer we het commando navigeren (). Vooruit () gebruiken. Het vindt plaats VOORDAT het omleiden van de gebruiker naar de volgende pagina.
Parameters:
(x) void afterNavigateBack (WebDriver arg0)
Deze methode wordt geactiveerd wanneer we het commando navigeren (). Vooruit () gebruiken. Het vindt plaats NA het omleiden van de gebruiker naar de volgende pagina.
Parameters:
(xi) void beforeNavigateRefresh (WebDriver arg0)
Deze methode wordt geactiveerd wanneer we de opdracht navigeren (). Refresh () gebruiken. Het vindt plaats VOORDAT de huidige pagina vernieuwen.
Parameters:
(xii) ongeldig afterNavigateRefresh (WebDriver arg0)
Deze methode wordt geactiveerd wanneer we de opdracht navigeren (). Refresh () gebruiken. Het vindt plaats NA de huidige pagina vernieuwen.
Parameters:
(xiii) void beforeFindBy (door arg0, WebElement arg1, WebDriver arg2)
Deze methode wordt geactiveerd wanneer we de opdracht gebruiken driver.findElement (By.id ('Some id or any other locator')) Het vindt plaats VOORDAT zoek het webelement.
Parameters:
(xiv) ongeldig afterFindBy (Door arg0, WebElement arg1, WebDriver arg2)
Deze methode wordt geactiveerd wanneer we de opdracht gebruiken driver.findElement (By.id ('Some id or any other locator')) Het vindt plaats NA zoek het webelement.
Parameters:
(xv) ongeldig onException (Throwable arg0, WebDriver arg1)
Deze methode wordt gegenereerd wanneer er een uitzondering wordt gegenereerd. Als de webdriver het element bijvoorbeeld niet kan vinden, wordt deze methode geactiveerd en wordt de code die erin is geschreven, uitgevoerd.
Parameters:
(xvi) void beforeAlertAccept (WebDriver arg0)
Deze methode wordt geactiveerd wanneer er een waarschuwingsvenster op het scherm wordt weergegeven en wordt rechts geactiveerd VOORDAT klikken op de knop 'OK of ACCEPTEREN'.
Parameters:
(xvii) ongeldig afterAlertAccept (WebDriver arg0)
hoeveel is het verkooppunt van quickbooks
Deze methode wordt geactiveerd wanneer er een waarschuwingsvenster op het scherm wordt weergegeven en wordt rechts geactiveerd NA klikken op de knop 'OK of ACCEPTEREN'.
Parameters:
(xviii) void beforeAlertDismiss (WebDriver arg0)
Deze methode wordt geactiveerd wanneer er een waarschuwingsvenster op het scherm wordt weergegeven en wordt rechts geactiveerd VOORDAT te klikken op de knop 'ANNULEREN'.
Parameters:
(xix) ongeldig afterAlertDismiss (WebDriver arg0)
Deze methode wordt geactiveerd wanneer er een waarschuwingsvenster op het scherm wordt weergegeven en wordt rechts geactiveerd NA te klikken op de knop 'ANNULEREN'.
Parameters:
Dit zijn alle methoden die beschikbaar zijn met WebDriverEventListener. Er zijn nog twee andere methoden vóórScript en afterScript, maar die gaan we in deze tutorial niet behandelen.
Stappen om listeners te implementeren met behulp van de 'WebDriverEventListener' -interface in Eclipse:
Stap 1: Maak een pakket met de naam 'Luisteraars'. Maak binnen dat pakket een klasse met de naam ' WebdriverListeners ”En laat het uitvoeren 'WebDriverEventListener'
De gebruikersinterface zou er als volgt uit moeten zien:
Beweeg uw muis over de rode lijn met Error, de Eclipse zou de onderstaande suggestie moeten geven om 'WebDriverEventListener' te importeren. Klik op Importeren.
De fout op de WebDriverEventListener is afgesloten, maar u zult de onderstaande fout zien in de 'WebDriverListeners' -klasse. Beweeg de cursor over de fout en u ziet een suggestie om niet-geïmplementeerde methoden toe te voegen. Klik erop en u zult zien dat alle methoden hierboven worden vermeld en beschreven.
Houd er rekening mee dat we voor demonstratiedoeleinden de regel System.out.println aan elke methode hebben toegevoegd.
Voorbeeldcode-1
Stap 2: Maak klasse Listeners_Tests en zorg ervoor dat de hoofdmethode in de klasse zit. Laat het de klasse WebDriverListeners uitbreiden zodat de listener-klasse een bewerking kan uitvoeren op de browseropdrachten die zijn voorgeschreven voor bepaalde gebeurtenissen.
Kopieer en plak de onderstaande code in de klasse Listeners_Tests. Voer de onderstaande code uit zoals de Java-applicatie.
Voorbeeldcode-2
beste manier om registervensters schoon te maken 10
Nadat de run met succes is voltooid, controleert u de inhoud die is vastgelegd in de console. We zullen naar elk evenement gaan dat in de bovenstaande code wordt vermeld.
Fragment # 1 van de console
Evenement-1: Dit registreert de gebeurtenis beforeNavigateTo en afterNavigateTo, en voert de acties uit die in de twee blokken zijn geschreven.
Evenement-2: Dit registreert de gebeurtenis beforeFindBy en afterFindBy, en voert de acties uit die in de twee blokken zijn geschreven. Het evenement na deze twee evenementen heeft betrekking op de events beforeClick en afterClick.
Evenement-3: Dit registreert de gebeurtenissen beforeChangeValueOf en afterChangeValue.
Evenement-4: Dit is hetzelfde als Event-3
Evenement-5: Dit registreert voorNavigateBack en naNavigateBack gebeurtenissen.
Evenement-6: Dit registreert events beforeNavigateForward en afterNavigateForward.
Evenement-7: Dit registreert de events beforeNavigateRefresh en afterNavigateRefresh.
Evenement-8: Dit is hetzelfde als Event-1
Evenement-9: Dit is hetzelfde als Event-2
Fragment # 2 van de console
Evenement-10: Dit registreert de gebeurtenissen zoals beforeAlertAccept en afterAlertAccept.
Evenement-11: Dit registreert de gebeurtenissen zoals beforeAlertDismiss en afterAlertDismiss.
Evenement-12: Dit registreert de gebeurtenissen zoals onException, en gooit het bericht.
Ik hoop dat de korte beschrijving van de luisteraars u een idee geeft van hoe de Webdriver Listeners werken. Zoals we eerder hebben gezegd, moeten we met de hulp van WebDriverEventListener alle methoden implementeren die beschikbaar zijn met deze interface.
Met behulp van de klasse AbstractWebDriverEventListener kunnen we echter kiezen welke evenementen we willen implementeren.
# 2) AbstractWebDriverEventListener-klasse
Stappen om listeners te implementeren met behulp van de klasse 'AbstractWebDriverEventListener':
Stap 1
Maak een klas ' AbstractWebDriverListener 'En laat het de klas uitbreiden' AbstractWebDriverEventListener
Zoals u kunt zien, in tegenstelling tot ' WebDriverEventListener ', Genereert deze klasse, wanneer deze wordt uitgebreid, geen fout om niet-geïmplementeerde methoden toe te voegen. U kunt de methoden selecteren die u in uw project wilt implementeren.
Kopieer en plak de onderstaande code:
Voorbeeldcode-3
Stap 2
Maak een nieuwe klas met de naam ' AbstractListeners_Test 'En maak daarin de instantie' AbstractWebDriverListeners ”Klasse.
Kopieer en plak de onderstaande code in deze klasse.
Voorbeeldcode-4
Deze klasse heeft ook de gebeurtenissen die eerder zijn opgenomen, maar aangezien we onze Listener-klasse hebben beperkt tot het implementeren van slechts zes gebeurtenissen, worden andere verwijderd en wordt alleen het logboek voor de genoemde gebeurtenissen weergegeven.
Consolevensterweergave
Zoals u de geel gemarkeerde gebieden in de bovenstaande afbeelding kunt zien, zijn alleen de methoden die zijn geïmplementeerd in het AbstractWebDriverListeners Klasse is geactiveerd.
Gevolgtrekking
WebDriver Listeners zijn de interfaces die naar een browsergebeurtenis luisteren en dienovereenkomstig daarop reageren. Als u het implementeert met behulp van WebDriverEventListener, moet u alle methoden implementeren die bij deze interface horen
Als u WebDriver Listener implementeert met behulp van de klasse AbstractWebDriverEventListener, kunt u de methoden kiezen die u wilt implementeren.
Bezoek hier om Selenium van Scratch te leren.
Aanbevolen literatuur
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Inleiding tot Selenium WebDriver - Selenium Tutorial # 8
- ChromeDriver Selenium-zelfstudie: Selenium Webdriver-tests op Chrome
- Implementatie van ons eerste WebDriver-script - Selenium WebDriver-zelfstudie # 10
- 30+ beste selenium-zelfstudies: leer selenium met echte voorbeelden
- Selenium - Veelgestelde vragen
- Omgaan met waarschuwingen / pop-ups in Selenium WebDriver - Selenium Tutorial # 16
- Impliciet en expliciet wachten in Selenium WebDriver (soorten Selenium Waits)