Manejo de cookies en Selenium WebDriver

Tabla de contenido:

Anonim

Una cookie HTTP se compone de información sobre el usuario y sus preferencias. Almacena información mediante un par clave-valor. Es un pequeño fragmento de datos que se envía desde la aplicación web y se almacena en el navegador web, mientras el usuario navega por ese sitio web.

Haga clic aquí para obtener información sobre las pruebas de cookies.

En este tutorial, aprenderemos:

  • Comandos de consulta de selenio para cookies
  • ¿Por qué manipular cookies en selenio?
  • Demostración: Manejo de cookies en Selenium.
  • Paso 1) Almacenamiento de la información de las cookies.
  • Paso 2) Uso de cookies almacenadas para iniciar sesión en la aplicación.

Comandos de consulta de selenio para cookies

En Selenium Webdriver, podemos consultar e interactuar con las cookies con el siguiente método integrado:

driver.manage (). getCookies (); // Devuelve la lista de todas las cookiesdriver.manage (). getCookieNamed (arg0); // Devuelve una cookie específica según el nombredriver.manage (). addCookie (arg0); // Crea y agrega la cookiedriver.manage (). deleteCookie (arg0); // Eliminar cookie específicadriver.manage (). deleteCookieNamed (arg0); // Eliminar la cookie específica según el Nombredriver.manage (). deleteAllCookies (); // Eliminar todas las cookies

¿Por qué manipular cookies en selenio?

Cada cookie está asociada con un nombre, valor, dominio, ruta, vencimiento y el estado de si es segura o no. Para validar un cliente, un servidor analiza todos estos valores en una cookie.

Al probar una aplicación web con el controlador web selenium, es posible que deba crear, actualizar o eliminar una cookie.

Por ejemplo, al automatizar la aplicación de compras en línea, es posible que necesite automatizar escenarios de prueba como realizar un pedido, ver el carrito, información de pago, confirmación del pedido, etc.

Si las cookies no se almacenan, deberá realizar una acción de inicio de sesión cada vez antes de ejecutar los escenarios de prueba enumerados anteriormente. Esto aumentará el esfuerzo de codificación y el tiempo de ejecución.

La solución es almacenar cookies en un archivo. Más tarde, recupere los valores de las cookies de este archivo y agréguelo a su sesión actual del navegador. Como resultado, puede omitir los pasos de inicio de sesión en cada caso de prueba porque su sesión de controlador contiene esta información.

El servidor de aplicaciones ahora trata la sesión de su navegador como autenticada y lo lleva directamente a la URL solicitada.

Demostración: Manejo de cookies en Selenium.

Usaremos http://demo.guru99.com/test/cookie/selenium_aut.php para nuestro propósito de demostración.

Este será un proceso de 2 pasos.

Paso 1) Inicie sesión en la aplicación y almacene la cookie de autenticación generada.

Paso 2) Usó la cookie almacenada para volver a iniciar sesión en la aplicación sin usar el ID de usuario y la contraseña.

Paso 1) Almacenamiento de la información de las cookies.

package CookieExample;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.util.Set;import org.openqa.selenium.By;importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.chrome.ChromeDriver;importar org.openqa.selenium.Cookie;cookieRead de clase pública {public static void main (String [] args){Controlador WebDriver;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");controlador = nuevo ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Ingrese la identificación del correo electrónico y la contraseña si ya está registradodriver.findElement (By.name ("nombre de usuario")). sendKeys ("abc123");driver.findElement (By.name ("contraseña")). sendKeys ("123xyz");driver.findElement (By.name ("enviar")). click ();// crear un archivo llamado Cookies para almacenar información de inicio de sesiónArchivo archivo = nuevo archivo ("Cookies.data");tratar{// Elimina el archivo antiguo si existefile.delete ();file.createNewFile ();FileWriter fileWrite = nuevo FileWriter (archivo);BufferedWriter Bwrite = nuevo BufferedWriter (fileWrite);// bucle para obtener la información de las cookies// bucle para obtener la información de las cookiespara (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 ();}atrapar (Excepción ex){ex.printStackTrace ();}}}

Explicación del código:

  • Crear instancia de WebDriver
  • Visitamos el sitio web utilizando el driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php")
  • Inicie sesión en la aplicación
  • Lea la información de las cookies usando
    driver.manage (). getCookies (); 
  • Almacene la información de la cookie usando FileWriter Class para escribir secuencias de caracteres y BufferedWriter para escribir el texto en un archivo para crear un archivo Cookies.data
  • El archivo "Cookies.data" almacena toda la información de las cookies junto con "Nombre, Valor, Dominio, Ruta". Podemos recuperar esta información e iniciar sesión en la aplicación sin ingresar las credenciales de inicio de sesión.
  • Una vez que ejecuta el código anterior, el archivo Cookie.data se crea en la estructura de la carpeta del proyecto, como se muestra en la siguiente pantalla. Abra el archivo Cookie.data, puede ver que la credencial de inicio de sesión de AUT se guarda en el formato de Cookie, vea la pantalla resaltada a continuación

Paso 2) Uso de cookies almacenadas para iniciar sesión en la aplicación.

Ahora, accederemos a la cookie generada en el paso 1 y usaremos la cookie generada para autenticar nuestra sesión en la aplicación.

package CookieExample;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.Date;import java.util.StringTokenizer;importar org.openqa.selenium.Cookie;importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.chrome.ChromeDriver;CookieWrite de clase pública{public static void main (String [] args) {Controlador WebDriver;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");controlador = nuevo ChromeDriver ();tratar{Archivo archivo = nuevo archivo ("Cookies.data");FileReader fileReader = nuevo FileReader (archivo);BufferedReader Buffreader = nuevo BufferedReader (fileReader);String strline;while ((strline = Buffreader.readLine ())! = null) {Tokenizador StringTokenizer = nuevo StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {Nombre de cadena = token.nextToken ();Valor de cadena = token.nextToken ();Cadena de dominio = token.nextToken ();Ruta de cadena = token.nextToken ();Fecha de vencimiento = nulo;String val;if (! (val = token.nextToken ()). equals ("null")){vencimiento = nueva fecha (val);}Boolean isSecure = new Boolean (token.nextToken ()).booleanValue ();Cookie ck = nueva Cookie (nombre, valor, dominio, ruta, vencimiento, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Esto agregará la cookie almacenada a su sesión actual}}} captura (Excepción ex) {ex.printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}

SALIDA: se lo lleva directamente a la pantalla de inicio de sesión exitoso sin ingresar la identificación de usuario y la contraseña de entrada

NOTA: Utilice la actualización completa en caso de que vea la página de inicio de sesión después de ejecutar el script anterior.

Conclusión

Por lo tanto, puede evitar ingresar el nombre de usuario y la contraseña en el servidor, validarlos una y otra vez para cada prueba con la ayuda de Selenium Webdriver y, por lo tanto, ahorra mucho tiempo.

Este artículo es una contribución de Mangesh Waghmare