Comment gérer les cookies dans Selenium pilote web
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 morceau 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 test des cookies.
Selenium Commandes de requête pour les cookies
In Selenium Webdriver, nous pouvons interroger et interagir avec les cookies avec la méthode intégrée ci-dessous :
Selenium Commandes de requête | Sortie |
---|---|
driver.manage().getCookies(); |
Retourner la liste de tous les cookies |
driver.manage().getCookieNamed(arg0); |
Renvoie un cookie spécifique en fonction du nom |
driver.manage().addCookie(arg0); |
Créer et ajouter le cookie |
driver.manage().deleteCookie(arg0); |
Supprimer un cookie spécifique |
driver.manage().deleteCookieNamed(arg0); |
Supprimer un cookie spécifique en fonction du nom |
driver.manage().deleteAllCookies(); |
Supprimer tous les cookies |
Pourquoi gérer (accepter) les cookies dans Selenium?
Chaque cookie est associé à un nom, une valeur, un domaine, un chemin, une expiration et un statut indiquant s'il est sécurisé ou non. Afin de valider un client, un serveur analyse toutes ces valeurs dans un cookie.
Quand Contrôle de qualité une application Web utilisant le pilote Web Selenium, vous devrez peut-être créer, mettre à jour ou supprimer un cookie.
Par exemple, lors de l'automatisation d'une application d'achat en ligne, vous devez souvent automatiser des scénarios de test tels que passer une commande, afficher le panier, les informations de paiement, la 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 répertoriés ci-dessus. Cela augmentera votre effort de codage et votre temps d’exécution.
La solution est de stocker les cookies dans un Fichier. Later, récupérez les valeurs du cookie de ce fichier et ajoutez-y votre session de navigation actuelle. Par conséquent, vous pouvez ignorer les étapes de connexion à chaque fois. Cas 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.
Comment gérer les cookies dans Selenium
Nous utiliserons https://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) J'ai utilisé le cookie stocké pour me reconnecter à l'application sans utiliser l'ID utilisateur ni 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; public class cookieRead{ public static void main(String[] args) { WebDriver driver; System.setProperty("webdriver.chrome.driver","G:///chromedriver.exe"); driver=new ChromeDriver(); driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php"); // Input Email id and Password If you are already Register driver.findElement(By.name("username")).sendKeys("abc123"); driver.findElement(By.name("password")).sendKeys("123xyz"); driver.findElement(By.name("submit")).click(); // create file named Cookies to store Login Information File file = new File("Cookies.data"); try { // Delete old file if exists file.delete(); file.createNewFile(); FileWriter fileWrite = new FileWriter(file); BufferedWriter Bwrite = new BufferedWriter(fileWrite); // loop for getting the cookie information // loop for getting the cookie information for(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(« https://demo.guru99.com/test/cookie/selenium_aut.php »)
- Connectez-vous à l'application
- Lisez les informations des cookies en utilisant
driver.manage().getCookies();
- Stockez les informations des cookies à l'aide de la classe FileWriter pour écrire des flux de caractères et BufferedWriter pour écrire le texte dans un fichier pour créer dans un fichier Cookies.data
- Le fichier « Cookies.data » stocke toutes les informations sur les cookies ainsi que « Nom, Valeur, Domaine, Chemin ». Nous pouvons récupérer ces informations et nous connecter à l'application sans saisir les informations de connexion.
- Une fois que vous avez exécuté le code ci-dessus, le fichier Cookie.data est créé dans la structure des dossiers 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 Cookie, voir l'écran en surbrillance ci-dessous
É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){ WebDriver driver; System.setProperty("webdriver.chrome.driver","G://chromedriver.exe"); driver=new ChromeDriver(); try{ File file = new File("Cookies.data"); FileReader fileReader = new FileReader(file); BufferedReader Buffreader = new BufferedReader(fileReader); String strline; while((strline=Buffreader.readLine())!=null){ StringTokenizer token = new StringTokenizer(strline,";"); while(token.hasMoreTokens()){ String name = token.nextToken(); String value = token.nextToken(); String domain = token.nextToken(); String path = token.nextToken(); Date expiry = null; String val; if(!(val=token.nextToken()).equals("null")) { expiry = new Date(val); } Boolean isSecure = new Boolean(token.nextToken()). booleanValue(); Cookie ck = new Cookie(name,value,domain,path,expiry,isSecure); System.out.println(ck); driver.manage().addCookie(ck); // This will add the stored cookie to your current session } } }catch(Exception ex){ ex.printStackTrace(); } driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php"); } }
Sortie : Vous êtes directement redirigé vers l'écran de réussite de la connexion sans saisir l'identifiant utilisateur et le mot de passe saisis.
NOTE: Utilisez l'actualisation matérielle au cas où vous verriez la page de connexion après avoir exécuté le script ci-dessus.
Pour aller plus loin
Ainsi, vous pouvez éviter de saisir le nom d'utilisateur et le mot de passe sur le serveur en les validant encore et encore à chaque test à l'aide de Selenium Webdriver, et permet ainsi de gagner beaucoup de temps.