Afhandeling van cookies in Selenium WebDriver

Inhoudsopgave:

Anonim

Een HTTP-cookie bevat informatie over de gebruiker en zijn voorkeuren. Het slaat informatie op met behulp van een sleutel / waarde-paar. Het is een klein stukje gegevens dat wordt verzonden vanaf de webapplicatie en wordt opgeslagen in de webbrowser terwijl de gebruiker op die website surft.

Klik hier voor meer informatie over het testen van cookies.

In deze tutorial zullen we leren -

  • Selenium Query-opdrachten voor cookies
  • Waarom omgaan met koekjes in selenium?
  • Demo: Cookie-afhandeling in Selenium.
  • Stap 1) Cookie-informatie opslaan.
  • Stap 2) Met behulp van opgeslagen cookies om in te loggen op de applicatie.

Selenium Query-opdrachten voor cookies

In Selenium Webdriver kunnen we cookies opvragen en gebruiken met de onderstaande ingebouwde methode:

driver.manage (). getCookies (); // Retourneer de lijst met alle cookiesdriver.manage (). getCookieNamed (arg0); // Retourneer een specifieke cookie op naamdriver.manage (). addCookie (arg0); // Creëer en voeg de cookie toedriver.manage (). deleteCookie (arg0); // Verwijder specifieke cookiedriver.manage (). deleteCookieNamed (arg0); // Verwijder specifieke cookie volgens naamdriver.manage (). deleteAllCookies (); // Verwijder alle cookies

Waarom omgaan met koekjes in selenium?

Elke cookie is gekoppeld aan een naam, waarde, domein, pad, vervaldatum en de status of het veilig is of niet. Om een ​​client te valideren, parseert een server al deze waarden in een cookie.

Wanneer u een webtoepassing test met een selenium-webstuurprogramma, moet u mogelijk een cookie maken, bijwerken of verwijderen.

Bij het automatiseren van de online winkelapplicatie moet u bijvoorbeeld veel testscenario's automatiseren, zoals een bestelling plaatsen, winkelwagen bekijken, betalingsinformatie, orderbevestiging, enz.

Als er geen cookies worden opgeslagen, moet u elke keer inloggen voordat u bovenstaande testscenario's uitvoert. Dit zal uw codeerinspanning en uitvoeringstijd vergroten.

De oplossing is om cookies op te slaan in een bestand. Haal later de waarden van de cookies uit dit bestand op en voeg uw huidige browsersessie toe. Als gevolg hiervan kunt u de inlogstappen in elke testcase overslaan omdat uw bestuurderssessie deze informatie bevat.

De applicatieserver behandelt uw browsersessie nu als geverifieerd en brengt u rechtstreeks naar de door u gevraagde URL.

Demo: Cookie-afhandeling in Selenium.

We zullen http://demo.guru99.com/test/cookie/selenium_aut.php gebruiken voor onze demo-doeleinden.

Dit proces is in twee stappen.

Stap 1) Log in op de applicatie en sla de gegenereerde authenticatiecookie op.

Stap 2) Gebruikt de opgeslagen cookie om opnieuw in te loggen op de applicatie zonder gebruikersnaam en wachtwoord te gebruiken.

Stap 1) Cookie-informatie opslaan.

pakket CookieExample;importeer java.io.BufferedWriter;importeer java.io.File;importeer java.io.FileWriter;importeer java.util.Set;import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.chrome.ChromeDriver;importeren org.openqa.selenium.Cookie;openbare klasse cookieRead {public static void main (String [] args)​WebDriver-stuurprogramma;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");driver = nieuwe ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Voer e-mail-id en wachtwoord in als u zich al hebt geregistreerddriver.findElement (By.name ("gebruikersnaam")). sendKeys ("abc123");driver.findElement (By.name ("wachtwoord")). sendKeys ("123xyz");driver.findElement (By.name ("submit")). click ();// maak een bestand met de naam Cookies om aanmeldingsgegevens op te slaanBestandsbestand = nieuw bestand ("Cookies.data");proberen​// Verwijder oud bestand indien aanwezigbestand.delete ();bestand.createNewFile ();FileWriter fileWrite = nieuwe FileWriter (bestand);BufferedWriter Bwrite = nieuwe BufferedWriter (fileWrite);// loop voor het verkrijgen van de cookie-informatie// loop voor het verkrijgen van de cookie-informatievoor (Cookie ck: driver.manage (). getCookies ())​Bwrite.write ((ck.getName () + ";" + ck.getValue () + ";" + ck.getDomain () + ";" + ck.getPath () + ";" + ck.getExpiry () + ";" + ck.isSecure ()));Bwrite.newLine ();​Bwrite.close ();fileWrite.close ();​catch (uitzondering ex)​bijv. printStackTrace ();​​​

Code Verklaring:

  • Maak een WebDriver-instantie
  • We bezoeken de website met de driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php")
  • Log in op de applicatie
  • Lees de cookie-informatie met
    driver.manage (). getCookies (); 
  • Sla de cookie-informatie op met behulp van FileWriter Class om tekenstromen te schrijven en BufferedWriter om de tekst in een bestand te schrijven om in een bestand Cookies.data te maken
  • Het "Cookies.data" -bestand slaat alle cookie-informatie op samen met "Naam, Waarde, Domein, Pad". We kunnen deze informatie ophalen en inloggen op de applicatie zonder de inloggegevens in te voeren.
  • Zodra u bovenstaande code uitvoert, wordt het Cookie.data-bestand gemaakt in de projectmapstructuur zoals weergegeven in het onderstaande scherm. Open het Cookie.data-bestand, u kunt zien dat de inloggegevens van de AUT zijn opgeslagen in het formaat van Cookie, zie het hieronder gemarkeerde scherm

Stap 2) Met behulp van opgeslagen cookies om in te loggen op de applicatie.

Nu hebben we toegang tot de cookie die in stap 1 is gegenereerd en gebruiken we de gegenereerde cookie om onze sessie in de applicatie te verifiëren

pakket CookieExample;importeer java.io.BufferedReader;importeer java.io.File;importeer java.io.FileReader;importeer java.util.Date;importeer java.util.StringTokenizer;importeren org.openqa.selenium.Cookie;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.chrome.ChromeDriver;openbare klasse CookieWrite​public static void main (String [] args) {WebDriver-stuurprogramma;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");driver = nieuwe ChromeDriver ();proberen{Bestandsbestand = nieuw bestand ("Cookies.data");FileReader fileReader = nieuwe FileReader (bestand);BufferedReader Buffreader = nieuwe BufferedReader (fileReader);String strline;while ((strline = Buffreader.readLine ())! = null) {StringTokenizer-token = nieuwe StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {Tekenreeksnaam = token.nextToken ();Tekenreekswaarde = token.nextToken ();String domein = token.nextToken ();Tekenreekspad = token.nextToken ();Vervaldatum = null;String val;if (! (val = token.nextToken ()). equals ("null"))​expiry = nieuwe datum (val);​Boolean isSecure = nieuwe Boolean (token.nextToken ()).booleanValue ();Cookie ck = nieuwe Cookie (naam, waarde, domein, pad, vervaldatum, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Hierdoor wordt de opgeslagen cookie aan uw huidige sessie toegevoegd​​} catch (uitzondering ex) {bijv. printStackTrace ();​driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");​​

UITVOER: U wordt direct naar het aanmeldingssuccesscherm geleid zonder het ingevoerde gebruikers-ID en wachtwoord in te voeren

OPMERKING: gebruik hard refresh voor het geval u de aanmeldingspagina ziet nadat u het bovenstaande script hebt uitgevoerd.

Gevolgtrekking

U kunt dus voorkomen dat u de gebruikersnaam en het wachtwoord op de server invoert en ze keer op keer valideert voor elke test met behulp van Selenium Webdriver, en bespaart daardoor veel tijd.

Dit artikel is bijgedragen door Mangesh Waghmare