implicit explicit wait selenium webdriver
Leer impliciet en expliciet wachten in Selenium WebDriver:
In de vorige tutorial hebben we geprobeerd je kennis te laten maken met de verschillende Looping en voorwaardelijke bewerkingen van WebDriver Deze voorwaardelijke methoden hebben vaak betrekking op bijna alle soorten zichtbaarheidsopties voor webelementen.
Hiermee gaan we vooruit gratis Selenium trainingsserie , we zullen bespreken verschillende soorten wachttijden verzorgd door de Selenium WebDriver We zullen ook bespreken over v arious soorten navigatie-opties beschikbaar in WebDriver.
Waits helpt de gebruiker om problemen op te lossen terwijl hij doorverwijst naar verschillende webpagina's door de hele webpagina te vernieuwen en de nieuwe pagina opnieuw te laden web-elementen. Soms kan er ook Ajax worden gebeld. Er kan dus een vertraging worden gezien tijdens het herladen van de webpagina's en het weerspiegelen van de webelementen.
Gebruikers worden vaak aangetroffen terwijl ze door verschillende webpagina's heen en weer navigeren. De navigatie () opdrachten / methoden die door de WebDriver worden geleverd, helpen de gebruiker dus om de real-time scenario's te simuleren door tussen de webpagina's te navigeren met verwijzing naar de geschiedenis van de webbrowser.
WebDriver rust de gebruiker uit met twee wachtgenen om het terugkerende laden van pagina's aan te kunnen s, laden van webelementen, het verschijnen van vensters, pop-ups en foutmeldingen en weerspiegeling van webelementen op de webpagina.
- Impliciet wachten
- Expliciet wachten
Laten we ze allemaal in detail bespreken met het oog op de praktische aanpak.
Wat je leert:
- WebDriver Impliciet wachten
- WebDriver Expliciet Wacht
- Verwachte staat
- Navigatie met behulp van WebDriver
- Gevolgtrekking
- Aanbevolen literatuur
WebDriver Impliciet wachten
Impliciete wachttijden worden gebruikt om een standaard wachttijd (bijvoorbeeld 30 seconden) te geven tussen elke opeenvolgende teststap / -opdracht in het hele testscript. De volgende teststap wordt dus pas uitgevoerd als de 30 seconden zijn verstreken na het uitvoeren van de vorige teststap / -opdracht.
Belangrijkste opmerkingen
- Het impliciete wachten is een enkele regel van een code en kan worden gedeclareerd in de installatiemethode van het testscript.
- In vergelijking met expliciet wachten is het impliciete wachten transparant en ongecompliceerd. De syntaxis en aanpak zijn eenvoudiger dan expliciet wachten.
Omdat impliciet wachten gemakkelijk en eenvoudig toe te passen is, zijn er ook enkele nadelen. Het geeft aanleiding tot de uitvoeringstijd van het testscript, aangezien elk van de opdrachten niet langer wacht gedurende een bepaalde tijd voordat de uitvoering wordt hervat.
Om dit probleem op te lossen, introduceert WebDriver expliciete wachttijden waarbij we expliciet wachttijden kunnen toepassen wanneer de situatie zich voordoet in plaats van krachtig te wachten tijdens het uitvoeren van elk van de teststappen.
Verklaringen importeren
importeren java.util.concurrent.TimeUnit - Om impliciete wachttijd in onze testscripts te kunnen gebruiken en toe te passen, zijn we verplicht dit pakket in ons testscript te importeren.
Syntaxis
drv .manage (). timeouts (). implicitlyWait (10, TimeUnit. SECONDEN
Neem de bovenstaande coderegel op in uw testscript kort na het instantiëren van de instantievariabele WebDriver. Dit is dus alles wat nodig is om een impliciete wachttijd in uw testscript in te stellen.
Code doorlopen
De impliciete wacht verplicht om twee waarden als parameters door te geven. Het eerste argument geeft de tijd in de numerieke cijfers aan die het systeem nodig heeft om te wachten. Het tweede argument geeft de tijdmeetschaal aan. Daarom hebben we in de bovenstaande code de '30' seconden als standaard wachttijd genoemd en de tijdseenheid is ingesteld op 'seconden'.
WebDriver Expliciet Wacht
Expliciete wachttijden worden gebruikt om de uitvoering te stoppen totdat aan een bepaalde voorwaarde is voldaan of de maximale tijd is verstreken. In tegenstelling tot impliciete wachttijden, worden expliciete wachttijden alleen voor een bepaald exemplaar toegepast.
WebDriver introduceert klassen zoals WebDriverWait en ExpectedConditions om expliciete wachttijden in de testscripts af te dwingen. In het kader van deze discussie zullen we 'gmail.com' als een voorbeeld gebruiken.
Scenario dat moet worden geautomatiseerd
- Start de webbrowser en open de 'gmail.com'
- Voer een geldige gebruikersnaam in
- Voer een geldig wachtwoord in
- Klik op de aanmeldknop
- Wacht tot de knop Opstellen zichtbaar is nadat de pagina is geladen
WebDriver-code met expliciet wachten
Houd er rekening mee dat we voor het maken van scripts het “Learning_Selenium” -project zouden gebruiken dat in de vorige tutorials was gemaakt.
Stap 1 : Maak een nieuwe Java-klasse met de naam 'Wait_Demonstration' onder het 'Learning_Selenium' -project.
Stap 2 : Kopieer en plak de onderstaande code in de klasse 'Wait_Demonstration.java'.
Hieronder staat het testscript dat equivalent is aan het bovengenoemde scenario.
Verklaringen importeren
- importeren org. openqa.selenium.support.ui.ExpectedConditions
- importeren org. openqa.selenium.support.ui.WebDriverWait
- Importeer bovenstaande pakketten voordat u het script maakt. De pakketten verwijzen naar de Select-klasse die nodig is om de vervolgkeuzelijst af te handelen.
Object instantiatie voor klasse WebDriverWait
WebDriverWait wait = nieuw WebDriverWait ( drv , 30);
We maken een referentievariabele 'wait' voor de WebDriverWait-klasse en instantiëren deze met behulp van de WebDriver-instantie en de maximale wachttijd voor de uitvoering om te ontslaan. De opgegeven maximale wachttijd wordt gemeten in 'seconden'.
De instantiatie van WebDriver werd besproken in de eerste tutorials van WebDriver.
Verwachte staat
Het bovenstaande commando wacht op een bepaalde hoeveelheid tijd of een verwachte toestand die zich voordoet, afhankelijk van wat zich het eerst voordoet of verstrijkt.
Om dit te kunnen doen, gebruiken we de referentievariabele 'wait' van de klasse WebDriverWait die in de vorige stap is gemaakt met de klasse ExpectedConditions en een actuele toestand die naar verwachting zal optreden. Daarom zou de programmabesturing, zodra de verwachte toestand zich voordoet, naar de volgende uitvoeringsstap gaan in plaats van de volledige 30 seconden krachtig te wachten.
In ons exemplaar wachten we tot de knop 'opstellen' aanwezig is en wordt geladen als onderdeel van het laden van de startpagina, en dus gaan we verder met het aanroepen van het klikcommando op de knop 'opstellen'.
Soorten verwachte omstandigheden
De klasse ExpectedConditions biedt een grote hulp bij het omgaan met scenario's waarin we moeten vaststellen of een toestand optreedt voordat de daadwerkelijke teststap wordt uitgevoerd.
De klasse ExpectedConditions wordt geleverd met een breed scala aan verwachte voorwaarden waartoe toegang kan worden verkregen met behulp van de WebDriverWait-referentievariabele en de methode till ().
Laten we er een paar uitvoerig bespreken:
# 1) elementToBeClickable () - De verwachte toestand wacht tot een element kan worden aangeklikt, d.w.z. het moet zowel aanwezig / weergegeven / zichtbaar zijn op het scherm als ingeschakeld zijn.
Voorbeeldcode
wait.until (ExpectedConditions.elementToBeClickable (By.xpath ( '// div (bevat (text (),’ COMPOSE ’))'
# 2) textToBePresentInElement () - De verwachte conditie wacht op een element met een bepaald stringpatroon.
Voorbeeldcode
wait.until (ExpectedConditions.textToBePresentInElement (By.xpath ( '// div (@ id =‘ forgetPass ''),' te vinden tekst '
youtube naar mp3 converter app gratis download
# 3) alertIsPresent () - De verwachte toestand wacht op het verschijnen van een waarschuwingsvenster.
Voorbeeldcode
wait.until (ExpectedConditions.alertIsPresent ())! = null);
# 4) titelIs () - De verwachte conditie wacht op een pagina met een specifieke titel.
Voorbeeldcode
wait.until (ExpectedConditions.titleIs ( 'Gmail'
# 5) frameToBeAvailableAndSwitchToIt () - De verwachte toestand wacht tot een frame beschikbaar is en zodra het frame beschikbaar is, schakelt de besturing er automatisch naar over.
Voorbeeldcode
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id (“ nieuw frame
Er is een veel voorkomende gebruikersactie waarbij de gebruiker op de knoppen Vorige en Volgende van de webbrowser heen en weer klikt om naar de verschillende webpagina's te navigeren die tijdens de huidige sessie in de browsergeschiedenis zijn bezocht. Om dergelijke acties die door de gebruikers worden uitgevoerd te simuleren, introduceert WebDriver Navigate-opdrachten.
Laten we deze commando's in detail bekijken:
# 1) navigeren (). Terug ()
Met deze opdracht kan de gebruiker naar de vorige webpagina navigeren.
Voorbeeldcode:
driver.navigate (). terug ();
De bovenstaande opdracht vereist geen parameters en brengt de gebruiker terug naar de vorige webpagina in de geschiedenis van de webbrowser.
# 2) navigeren (). Vooruit ()
Met deze opdracht kan de gebruiker naar de volgende webpagina navigeren met verwijzing naar de geschiedenis van de browser.
Voorbeeldcode:
driver.navigate (). vooruit ();
De bovenstaande opdracht vereist geen parameters en leidt de gebruiker door naar de volgende webpagina in de geschiedenis van de webbrowser.
# 3) navigeren (). Vernieuwen ()
Met deze opdracht kan de gebruiker de huidige webpagina vernieuwen, waardoor alle webelementen opnieuw worden geladen.
Voorbeeldcode:
driver.navigate (). refresh ();
De bovenstaande opdracht vereist geen parameters en laadt de webpagina opnieuw.
# 4) navigeren (). Naar ()
Met deze opdracht kan de gebruiker een nieuw webbrowservenster openen en naar de opgegeven URL navigeren.
Voorbeeldcode:
driver.navigate (). naar ('http://google.com');
De bovenstaande opdracht vereist een web-URL als parameter en vervolgens wordt de opgegeven URL geopend in een pas gelanceerde webbrowser.
Gevolgtrekking
In deze Impliciet en expliciet wachten in de zelfstudie van Selenium WebDriver , hebben we geprobeerd u bekend te maken met het wachten van de WebDriver. We bespraken en oefenden zowel het expliciete als het impliciete wachten. Tegelijkertijd hebben we ook de verschillende navigatiecommando's besproken.
Hier zijn de kernpunten van dit artikel:
- Met WebDriver kan de gebruiker kiezen uit de beschikbare wachttijden om situaties af te handelen waarin de uitvoeringsstroom een paar seconden slaap nodig heeft om de webelementen te laden of om aan een specifieke voorwaarde te voldoen. Er zijn twee soorten wachttijden beschikbaar in WebDriver.
- Impliciet wachten
- Expliciet wachten
- Impliciet wacht worden gebruikt om een standaard wachttijd te bieden tussen elke opeenvolgende teststap / -commando voor het gehele testscript. De volgende teststap wordt dus alleen uitgevoerd als de gespecificeerde hoeveelheid tijd is verstreken na het uitvoeren van de vorige teststap / -opdracht.
- Expliciet wacht worden gebruikt om de uitvoering te stoppen totdat aan een bepaalde voorwaarde is voldaan of de maximale tijd is verstreken. In tegenstelling tot impliciete wachttijden, worden expliciete wachttijden alleen voor een bepaald exemplaar toegepast.
- WebDriver introduceert klassen zoals WebDriverWait en ExpectedConditions om expliciet wachten af te dwingen
- Verwachte voorwaarden class biedt een grote hulp bij het omgaan met scenario's waarin we moeten vaststellen of een conditie optreedt voordat de daadwerkelijke teststap wordt uitgevoerd.
- De klasse ExpectedConditions wordt geleverd met een breed scala aan verwachte voorwaarden waartoe toegang kan worden verkregen met behulp van de WebDriverWait-referentievariabele en de methode till ().
- Navigeer () methoden / -opdrachten worden gebruikt om het gebruikersgedrag te simuleren tijdens het heen en weer navigeren tussen verschillende webpagina's.
Volgende les # 16 : Als we verder gaan met de volgende tutorial in de lijst, willen we de gebruikers vertrouwd maken met verschillende soorten waarschuwingen die kunnen verschijnen bij het bezoeken van websites en hun behandelingsmethoden in WebDriver. De soorten waarschuwingen waarop we ons zouden concentreren, zijn voornamelijk - op vensters gebaseerde waarschuwingspop-ups en webgebaseerde waarschuwingspop-ups. Omdat we weten dat het afhandelen van op vensters gebaseerde pop-ups buiten de mogelijkheden van WebDriver valt, zouden we ook enkele hulpprogramma's van derden gebruiken om pop-ups van vensters af te handelen.
Noot voor de lezers : Tot die tijd kunnen de lezers de scenario's automatiseren waarbij verschillende pagina's worden geladen en dynamische elementen op het scherm verschijnen met behulp van de verschillende verwachte omstandigheden en navigatieopdrachten.
Aanbevolen literatuur
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Inleiding tot Selenium WebDriver - Selenium Tutorial # 8
- Implementatie van ons eerste WebDriver-script - Selenium WebDriver-zelfstudie # 10
- Selenium - Veelgestelde vragen
- Omgaan met waarschuwingen / pop-ups in Selenium WebDriver - Selenium Tutorial # 16
- Gids voor het genereren van omvangrapporten in Selenium WebDriver
- Selenium WebDriver uitvoeren in verschillende populaire browsers
- WebDriver Volledige installatie en installatie met Eclipse - Selenium Tutorial # 9