Como lidar com cookies em Selenium webdriver

Um cookie HTTP รฉ composto por informaรงรตes sobre o usuรกrio e suas preferรชncias. Ele armazena informaรงรตes usando um par de valores-chave. ร‰ um pequeno dado enviado do aplicativo Web e armazenado no navegador da Web, enquanto o usuรกrio navega naquele site.

Clique aqui para saber mais sobre teste de cookies.

Selenium Comandos de consulta para cookies

In Selenium Webdriver, podemos consultar e interagir com cookies com o mรฉtodo integrado abaixo:

Selenium Comandos de consulta saรญda
driver.manage().getCookies(); Retorne a lista de todos os cookies
driver.manage().getCookieNamed(arg0); Retornar cookie especรญfico de acordo com o nome
driver.manage().addCookie(arg0); Crie e adicione o cookie
driver.manage().deleteCookie(arg0); Excluir cookie especรญfico
driver.manage().deleteCookieNamed(arg0); Exclua cookie especรญfico de acordo com o nome
driver.manage().deleteAllCookies(); Excluir todos os cookies

Por que lidar (aceitar) cookies em Selenium?

Cada cookie estรก associado a um nome, valor, domรญnio, caminho, validade e o status de ser seguro ou nรฃo. Para validar um cliente, um servidor analisa todos esses valores em um cookie.

Ao Testes um aplicativo da web usando o driver da web Selenium, pode ser necessรกrio criar, atualizar ou excluir um cookie.

Por exemplo, ao automatizar o aplicativo de compras online, muitos precisam automatizar cenรกrios de teste, como fazer pedido, visualizar carrinho, informaรงรตes de pagamento, confirmaรงรฃo de pedido, etc.

Se os cookies nรฃo forem armazenados, vocรช precisarรก realizar uma aรงรฃo de login sempre antes de executar os cenรกrios de teste listados acima. Isso aumentarรก seu esforรงo de codificaรงรฃo e tempo de execuรงรฃo.

A soluรงรฃo รฉ armazenar cookies em um arquivo. Later, recupere os valores do cookie deste arquivo e adicione a ele sua sessรฃo atual do navegador. Como resultado, vocรช pode pular as etapas de login em cada Caso de teste porque sua sessรฃo de driver contรฉm essas informaรงรตes.

O servidor de aplicativos agora trata a sessรฃo do seu navegador como autenticada e leva vocรช diretamente ao URL solicitado.

Como lidar com cookies em Selenium

Nรณs vamos usar https://demo.guru99.com/test/cookie/selenium_aut.php para nosso propรณsito de demonstraรงรฃo.

Este serรก um processo de 2 etapas.

Passo 1) Faรงa login no aplicativo e armazene o cookie de autenticaรงรฃo gerado.

Lidar com cookies em Selenium

Passo 2) Usou o cookie armazenado para fazer login novamente no aplicativo sem usar ID de usuรกrio e senha.

Etapa 1) Armazenar informaรงรตes de 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();			
        }		
    }		
}

Explicaรงรฃo do cรณdigo:

  • Criar instรขncia do WebDriver
  • Visitamos o site usando driver.get (โ€œhttps://demo.guru99.com/test/cookie/selenium_aut.phpโ€)
  • Faรงa login no aplicativo
  • Leia as informaรงรตes do cookie usando
    driver.manage().getCookies();
  • Armazene as informaรงรตes do cookie usando a classe FileWriter para escrever fluxos de caracteres e BufferedWriter para escrever o texto em um arquivo para criar em um arquivo Cookies.data
  • O arquivo โ€œCookies.dataโ€ armazena todas as informaรงรตes dos cookies junto com โ€œNome, Valor, Domรญnio, Caminhoโ€. Podemos recuperar essas informaรงรตes e fazer login no aplicativo sem inserir as credenciais de login.
  • Depois de executar o cรณdigo acima, o arquivo Cookie.data รฉ criado na estrutura de pastas do projeto, conforme mostrado na tela abaixo. Abra o arquivo Cookie.data, vocรช pode ver a credencial de login do AUT salva no formato de Cookie, veja a tela destacada abaixo

    Lidar com cookies em Selenium

Etapa 2) Usando o cookie armazenado para fazer login no aplicativo

Agora, acessaremos o cookie gerado no passo 1 e utilizaremos o cookie gerado para autenticar nossa sessรฃo na aplicaรงรฃo

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");					
}	
	}	

Saรญda: Vocรช รฉ levado diretamente para a tela de sucesso de login sem inserir o ID de usuรกrio e a senha de entrada

OBSERVAร‡รƒO: Use a atualizaรงรฃo completa caso vocรช veja a pรกgina de login apรณs executar o script acima.

Conclusรฃo

Assim, vocรช pode evitar inserir o nome de usuรกrio e a senha no servidor, validando-os repetidamente para cada teste com a ajuda de Selenium Webdriver e, assim, economiza muito tempo.

Resuma esta postagem com: