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.
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
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.


