Un cookie HTTP est composé d'informations sur l'utilisateur et ses préférences. Il stocke les informations à l'aide d'une paire clé-valeur. Il s'agit d'un petit élément de données envoyé depuis l'application Web et stocké dans le navigateur Web, pendant que l'utilisateur navigue sur ce site Web.
Cliquez ici pour en savoir plus sur les tests de cookies.
Dans ce tutoriel, nous allons apprendre -
- Commandes de requête Selenium pour les cookies
- Pourquoi gérer les cookies dans Selenium?
- Démo: gestion des cookies dans Selenium.
- Étape 1) Stockage des informations sur les cookies.
- Étape 2) Utilisation du cookie stocké pour vous connecter à l'application.
Commandes de requête Selenium pour les cookies
Dans Selenium Webdriver, nous pouvons interroger et interagir avec les cookies avec la méthode intégrée ci-dessous:
driver.manage (). getCookies (); // Retourne la liste de tous les cookiesdriver.manage (). getCookieNamed (arg0); // Renvoie un cookie spécifique en fonction du nomdriver.manage (). addCookie (arg0); // Créer et ajouter le cookiedriver.manage (). deleteCookie (arg0); // Supprimer un cookie spécifiquedriver.manage (). deleteCookieNamed (arg0); // Supprimer le cookie spécifique selon le nomdriver.manage (). deleteAllCookies (); // Supprimer tous les cookies
Pourquoi gérer les cookies dans Selenium?
Chaque cookie est associé à un nom, une valeur, un domaine, un chemin, une expiration et l'état de sa sécurité ou non. Afin de valider un client, un serveur analyse toutes ces valeurs dans un cookie.
Lors du test d'une application Web à l'aide du pilote Web sélénium, vous devrez peut-être créer, mettre à jour ou supprimer un cookie.
Par exemple, lors de l'automatisation de l'application d'achat en ligne, vous devez automatiser de nombreux scénarios de test tels que passer commande, afficher le panier, informations de paiement, confirmation de commande, etc.
Si les cookies ne sont pas stockés, vous devrez effectuer une action de connexion à chaque fois avant d'exécuter les scénarios de test énumérés ci-dessus. Cela augmentera votre effort de codage et votre temps d'exécution.
La solution consiste à stocker les cookies dans un fichier. Plus tard, récupérez les valeurs de cookie de ce fichier et ajoutez-y votre session de navigateur actuelle. Par conséquent, vous pouvez ignorer les étapes de connexion dans chaque scénario de test car votre session de pilote contient ces informations.
Le serveur d'applications traite désormais votre session de navigateur comme authentifiée et vous amène directement à l'URL demandée.
Démo: gestion des cookies dans Selenium.
Nous utiliserons http://demo.guru99.com/test/cookie/selenium_aut.php à des fins de démonstration.
Ce sera un processus en 2 étapes.
Étape 1) Connectez-vous à l'application et stockez le cookie d'authentification généré.
Étape 2) Utilisation du cookie stocké pour se connecter à nouveau à l'application sans utiliser l'ID utilisateur et le mot de passe.
Étape 1) Stockage des informations sur les cookies.
package 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;cookie de classe publiquepublic static void main (String [] args){Pilote WebDriver;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");pilote = nouveau ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Entrer l'identifiant et le mot de passe de l'e-maildriver.findElement (Par.nom ("nom d'utilisateur")). sendKeys ("abc123");driver.findElement (Par.nom ("mot de passe")). sendKeys ("123xyz");driver.findElement (Par.nom ("soumettre")). click ();// crée un fichier nommé Cookies pour stocker les informations de connexionFichier fichier = nouveau fichier ("Cookies.data");essayer{// Supprimer l'ancien fichier s'il existefile.delete ();file.createNewFile ();FileWriter fileWrite = nouveau FileWriter (fichier);BufferedWriter Bwrite = nouveau BufferedWriter (fileWrite);// boucle pour obtenir les informations sur les cookies// boucle pour obtenir les informations sur les cookiespour (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 (Exception ex){ex.printStackTrace ();}}}
Explication du code:
- Créer une instance WebDriver
- Nous visitons le site Web en utilisant le driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php")
- Connectez-vous à l'application
- Lire les informations sur les cookies en utilisant
driver.manage (). getCookies ();
- Stockez les informations de cookie en utilisant FileWriter Class pour écrire des flux de caractères et BufferedWriter pour écrire le texte dans un fichier à créer dans un fichier Cookies.data
- Le fichier "Cookies.data" stocke toutes les informations sur les cookies avec "Nom, Valeur, Domaine, Chemin". Nous pouvons récupérer ces informations et nous connecter à l'application sans entrer les informations de connexion.
- Une fois que vous exécutez le code ci-dessus, le fichier Cookie.data est créé dans la structure du dossier du projet, comme indiqué dans l'écran ci-dessous. Ouvrez le fichier Cookie.data, vous pouvez voir que les informations de connexion de l'AUT sont enregistrées au format de cookie, voir l'écran ci-dessous en surbrillance
Étape 2) Utilisation du cookie stocké pour vous connecter à l'application.
Maintenant, nous allons accéder au cookie généré à l'étape 1 et utiliser le cookie généré pour authentifier notre session dans l'application
package 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;public class CookieWrite{public static void main (String [] args) {Pilote WebDriver;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");pilote = nouveau ChromeDriver ();essayer{Fichier fichier = nouveau fichier ("Cookies.data");FileReader fileReader = nouveau FileReader (fichier);BufferedReader Buffreader = nouveau BufferedReader (fileReader);String strline;while ((strline = Buffreader.readLine ())! = null) {Jeton StringTokenizer = nouveau StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {Nom de la chaîne = token.nextToken ();Valeur de chaîne = token.nextToken ();Domaine de chaîne = token.nextToken ();Chemin de chaîne = token.nextToken ();Date d'expiration = null;String val;if (! (val = token.nextToken ()). equals ("null")){expiration = nouvelle date (val);}Boolean isSecure = new Boolean (token.nextToken ()).booleanValue ();Cookie ck = nouveau cookie (nom, valeur, domaine, chemin, expiration, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Cela ajoutera le cookie stocké à votre session actuelle}}} catch (Exception ex) {ex.printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}
SORTIE: Vous êtes directement redirigé vers l'écran de réussite de la connexion sans entrer l'ID utilisateur et le mot de passe d'entrée
REMARQUE: utilisez l'actualisation matérielle au cas où vous voyez la page de connexion après l'exécution du script ci-dessus.
Conclusion
Ainsi, vous pouvez éviter de saisir le nom d'utilisateur et le mot de passe sur le serveur en les validant encore et encore pour chaque test à l'aide de Selenium Webdriver, et ainsi gagner beaucoup de temps.
Cet article est contribué par Mangesh Waghmare