Umgang mit Cookies in Selenium WebDriver

Inhaltsverzeichnis:

Anonim

Ein HTTP-Cookie enthält Informationen über den Benutzer und seine Einstellungen. Es speichert Informationen unter Verwendung eines Schlüssel-Wert-Paares. Es handelt sich um kleine Daten, die von der Webanwendung gesendet und im Webbrowser gespeichert werden, während der Benutzer diese Website durchsucht.

Klicken Sie hier, um mehr über das Testen von Cookies zu erfahren.

In diesem Tutorial lernen wir -

  • Selenium-Abfragebefehle für Cookies
  • Warum mit Cookies in Selen umgehen?
  • Demo: Cookie-Handhabung in Selen.
  • Schritt 1) ​​Speichern von Cookie-Informationen.
  • Schritt 2) Verwenden Sie ein gespeichertes Cookie, um sich bei der Anwendung anzumelden.

Selenium-Abfragebefehle für Cookies

In Selenium Webdriver können wir Cookies mit der folgenden integrierten Methode abfragen und mit ihnen interagieren:

driver.manage (). getCookies (); // Die Liste aller Cookies zurückgebendriver.manage (). getCookieNamed (arg0); // Bestimmte Cookies entsprechend dem Namen zurückgebendriver.manage (). addCookie (arg0); // Cookie erstellen und hinzufügendriver.manage (). deleteCookie (arg0); // Ein bestimmtes Cookie löschendriver.manage (). deleteCookieNamed (arg0); // Lösche ein bestimmtes Cookie gemäß dem Namendriver.manage (). deleteAllCookies (); // Alle Cookies löschen

Warum mit Cookies in Selen umgehen?

Jedem Cookie sind ein Name, ein Wert, eine Domäne, ein Pfad, ein Ablaufdatum und der Status zugeordnet, ob es sicher ist oder nicht. Um einen Client zu validieren, analysiert ein Server alle diese Werte in einem Cookie.

Wenn Sie eine Webanwendung mit dem Selenium-Webtreiber testen, müssen Sie möglicherweise ein Cookie erstellen, aktualisieren oder löschen.

Wenn Sie beispielsweise die Online-Einkaufsanwendung automatisieren, müssen Sie häufig Testszenarien wie Bestellung, Warenkorb anzeigen, Zahlungsinformationen, Auftragsbestätigung usw. automatisieren.

Wenn keine Cookies gespeichert werden, müssen Sie jedes Mal eine Anmeldeaktion ausführen, bevor Sie die oben aufgeführten Testszenarien ausführen. Dies erhöht Ihren Codierungsaufwand und Ihre Ausführungszeit.

Die Lösung besteht darin, Cookies in einer Datei zu speichern. Rufen Sie später die Cookie-Werte aus dieser Datei ab und fügen Sie Ihre aktuelle Browsersitzung hinzu. Infolgedessen können Sie die Anmeldeschritte in jedem Testfall überspringen, da Ihre Treibersitzung diese Informationen enthält.

Der Anwendungsserver behandelt Ihre Browsersitzung jetzt als authentifiziert und führt Sie direkt zu Ihrer angeforderten URL.

Demo: Cookie-Handhabung in Selen.

Wir werden http://demo.guru99.com/test/cookie/selenium_aut.php für unsere Demo verwenden.

Dies ist ein zweistufiger Prozess.

Schritt 1) Melden Sie sich bei der Anwendung an und speichern Sie das generierte Authentifizierungscookie.

Schritt 2) Verwenden Sie das gespeicherte Cookie, um sich erneut bei der Anwendung anzumelden, ohne die Benutzer-ID und das Kennwort zu verwenden.

Schritt 1) ​​Speichern von Cookie-Informationen.

Paket CookieExample;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.util.Set;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.Cookie;public class cookieRead {public static void main (String [] args){WebDriver-Treiber;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");Treiber = neuer ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// E-Mail-ID und Passwort eingeben Wenn Sie bereits registriert sinddriver.findElement (By.name ("Benutzername")). sendKeys ("abc123");driver.findElement (By.name ("password")). sendKeys ("123xyz");driver.findElement (By.name ("submit")). click ();// Datei mit dem Namen Cookies erstellen, um Anmeldeinformationen zu speichernDatei Datei = neue Datei ("Cookies.data");Versuchen{// Alte Datei löschen, falls vorhandenfile.delete ();file.createNewFile ();FileWriter fileWrite = neuer FileWriter (Datei);BufferedWriter Bwrite = neuer BufferedWriter (fileWrite);// Schleife zum Abrufen der Cookie-Informationen// Schleife zum Abrufen der Cookie-Informationenfür (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 ();}}fangen (Ausnahme ex){ex.printStackTrace ();}}}}}}

Code Erläuterung:

  • Erstellen Sie eine WebDriver-Instanz
  • Wir besuchen die Website mit dem Treiber.get ("http://demo.guru99.com/test/cookie/selenium_aut.php").
  • Melden Sie sich bei der Anwendung an
  • Lesen Sie die Cookie-Informationen mit
    driver.manage (). getCookies (); 
  • Speichern Sie die Cookie-Informationen mit der FileWriter-Klasse, um Zeichenströme zu schreiben, und mit BufferedWriter, um den Text in eine Datei zu schreiben und in eine Datei Cookies.data zu erstellen
  • In der Datei "Cookies.data" werden alle Cookie-Informationen zusammen mit "Name, Wert, Domäne, Pfad" gespeichert. Wir können diese Informationen abrufen und uns bei der Anwendung anmelden, ohne die Anmeldeinformationen einzugeben.
  • Sobald Sie den obigen Code ausgeführt haben, wird die Datei Cookie.data in der Projektordnerstruktur erstellt, wie im folgenden Bildschirm gezeigt. Öffnen Sie die Datei "Cookie.data". Sie können sehen, dass die Anmeldeinformationen des AUT im Format "Cookie" gespeichert sind (siehe unten hervorgehobener Bildschirm)

Schritt 2) Verwenden Sie ein gespeichertes Cookie, um sich bei der Anwendung anzumelden.

Jetzt greifen wir auf das in Schritt 1 generierte Cookie zu und verwenden das generierte Cookie, um unsere Sitzung in der Anwendung zu authentifizieren

Paket CookieExample;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.Date;import java.util.StringTokenizer;import org.openqa.selenium.Cookie;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;öffentliche Klasse CookieWrite{public static void main (String [] args) {WebDriver-Treiber;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");Treiber = neuer ChromeDriver ();Versuchen{Datei Datei = neue Datei ("Cookies.data");FileReader fileReader = neuer FileReader (Datei);BufferedReader Buffreader = neuer BufferedReader (fileReader);String strline;while ((strline = Buffreader.readLine ())! = null) {StringTokenizer token = neuer StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {String name = token.nextToken ();String value = token.nextToken ();String domain = token.nextToken ();String path = token.nextToken ();Ablaufdatum = null;String val;if (! (val = token.nextToken ()). equals ("null")){Ablauf = neues Datum (val);}}Boolean isSecure = neuer Boolean (token.nextToken ()).booleanValue ();Cookie ck = neues Cookie (Name, Wert, Domain, Pfad, Ablauf, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Dadurch wird das gespeicherte Cookie zu Ihrer aktuellen Sitzung hinzugefügt}}}}} catch (Ausnahme ex) {ex.printStackTrace ();}}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}}}

AUSGABE: Sie werden direkt zum Anmeldeerfolgsbildschirm weitergeleitet, ohne die eingegebene Benutzer-ID und das eingegebene Kennwort einzugeben

HINWEIS: Verwenden Sie die Hard-Aktualisierung, falls Sie nach dem Ausführen des obigen Skripts die Anmeldeseite sehen.

Fazit

So können Sie vermeiden, den Benutzernamen und das Passwort auf dem Server einzugeben, um sie bei jedem Test mit Hilfe von Selenium Webdriver immer wieder zu überprüfen, und sparen dadurch viel Zeit.

Dieser Artikel wurde von Mangesh Waghmare verfasst